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

OCaml, Sync on two events simultaneous with "and"

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

谢谢

约翰内斯

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

据我所知,Event 模块不支持等待事件的合取,只支持析取。等待连词(对我来说)似乎容易出现死锁。