当两个线程分别运行一个特定的进程时,当一个线程返回该值时程序是否结束?



场景如下:

您有两个线程(代表不同的机器),它们从单个数据源获取相同的输入,运行相同的进程(不依赖于任何共享资源)并返回相同的值。

如果一个线程(读:机器)比另一个线程快,并且先完成,程序会接受这个值并结束,还是等待另一个线程完成?如果答案是后者,是否有办法强制程序接受第一个答案?

这样做的实际原因可能是为了处理难以忍受的慢机器。

这完全由你来决定。如果生成两个线程,则可以从父进程控制它们并决定所需的行为。您可以在两个线程上都执行wait,或者等待直到其中一个可用(例如:使用父线程的select或子线程的signal),并可能杀死另一个(再次使用信号,或kill)。

关于系统编程(多处理,线程,通信,并发…)的一个很好的参考,参见Objective Caml中的Unix系统编程。这里有一个示例(psearch),其中线程协作查找结果,并在其中一个成功时立即停止。

相关内容

  • 没有找到相关文章

最新更新