基于C ++ MultiThread Worker的方法

时间:2015-09-25 20:09:42

标签: c++ multithreading synchronization worker

我希望开发一个基于多线程工作者的子应用程序。我正在浏览各种网站上的方法,然后突然转到维基页面上。

https://en.wikipedia.org/wiki/Thread_pool_pattern

  

实现此模式时,程序员应该确保   队列的线程安全性。在Java中,您可以同步相关的   使用synchronized关键字的方法。这将绑定块   因此,同步修改为一个原子结构   使用关联资源强制任何线程等到那里   没有使用该资源的线程。(我希望这是可以实现的   在c ++中应用互斥锁)作为这种方法的缺点,   同步相当昂贵。您还可以创建一个对象   它包含队列中所有作业的列表,可以是一个   单。

我想要了解的是,包含所有作业列表的单个对象如何帮助我而不是同步队列。它们将如何完全不同?

P.S:我知道你们中很少有人会质疑我的内容来源(维基这里),但我仍然希望了解更多内容。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你为什么要重新发明轮子"而不只是使用行业标准方法,如(具体是目标C ++应用程序)?它们都基于一个工作窃取调度程序,它可以在两个方向上很好地扩展(比共享队列好得多),实现嵌套并行性,从而解决了在创建自己的线程池或使用现有线程池时不可避免的可组合性问题使用固定数量的工作线程(如)。