【问题标题】:OCaml, Sync on two events simultaneous with "and"OCaml,与“和”同时同步两个事件
【发布时间】:2015-05-10 17:39:37
【问题描述】:

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

谢谢

约翰内斯

【问题讨论】:

    标签: multithreading events synchronization ocaml


    【解决方案1】:

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

    据我所知,Event 模块不支持等待事件的合取,只支持析取。等待连词似乎(在我看来)容易陷入僵局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多