串行提升线程在循环中加入与在主中并行

Posted

技术标签:

【中文标题】串行提升线程在循环中加入与在主中并行【英文标题】:serial boost thread joins in loop vs parallel in main 【发布时间】:2013-09-12 16:04:46 【问题描述】:

在尝试理解 this answer 时,我发现了许多类似的问题,当然还有文档,但没有解释原因。

为什么main 中调用的joins 可以并行运行,而main 中循环调用的joins 不能?

【问题讨论】:

【参考方案1】:

想想事件的顺序。这就是区别

start thread 1
start thread 2
wait for thread 1 to finish
wait for thread 2 to finish

start thread 1
wait for thread 1 to finish

start thread 2
wait for thread 2 to finish

显然,在第二种情况下,两个线程永远不会同时运行。

【讨论】:

以上是关于串行提升线程在循环中加入与在主中并行的主要内容,如果未能解决你的问题,请参考以下文章

Spark优化,多线程提交任务,提升效率

在 OpenMP 中并行化嵌套循环并使用更多线程执行内部循环

从并行线程在主 Maya 线程上执行代码

ios多线程同步异步、串行并行队列、死锁

iOS多线程——同步异步串行并行

如何在 SceneKit 的渲染队列中处理触摸事件