OCaml,同时与"和"同步两个事件

时间:2015-05-10 17:39:37

标签: multithreading events synchronization ocaml

我写了一个包含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。

由于

约翰

1 个答案:

答案 0 :(得分:0)

嗯,and不是事件原语。它是OCaml语法的基础部分,其目的是允许相互递归的定义。在我看来,只要你意识到这一点,它就不会产生误导。如果它是一个事件原语,它将在Event模块中定义,在我看来。

据我所知,Event模块不支持等待事件的结合,仅支持析取。等待连词似乎(对我而言)容易陷入僵局。