我写了一个包含6个主题和3个频道的短节目。 3个线程同时在2个通道上发送,另外3个正在接收。问题是,似乎发送线程占用一个通道,但如果它不能采用第二个通道,则保留第一个通道。 我希望有一个效果,即发送线程尝试发送超过2个通道。如果这不起作用,它就不会保留它所获得的那个并等待最后一个工作。
我认为这样做会。但似乎没有。
let takeFork2 = Event.send take_f2 3 in
let takeFork3 = Event.send take_f3 3 in
let e2 = Event.sync takeFork2 and
e3 = Event.sync takeFork3 in
所以和在这里误导?!我应该使用嵌套换行,wrap_abort,选择,......来实现我的目标吗?
我问过这个,知道和。我不熟悉OCaml。
由于
约翰
答案 0 :(得分:0)
嗯,and
不是事件原语。它是OCaml语法的基础部分,其目的是允许相互递归的定义。在我看来,只要你意识到这一点,它就不会产生误导。如果它是一个事件原语,它将在Event
模块中定义,在我看来。
据我所知,Event
模块不支持等待事件的结合,仅支持析取。等待连词似乎(对我而言)容易陷入僵局。