C++ C++;基于多线程工作者的方法

C++ C++;基于多线程工作者的方法,c++,multithreading,synchronization,worker,tbb,ppl,openmp,C++,Multithreading,Synchronization,Worker,Tbb,Ppl,Openmp,我希望开发一个基于多线程工作者的子应用程序。我在各种网站上浏览,突然发现了一个维基页面 在实现此模式时,程序员应确保 队列的线程安全性。在Java中,您可以同步相关的 方法使用synchronized关键字。这将绑定块 用synchronized修改为一个原子结构,因此 强制使用关联资源的所有线程等待,直到 没有线程使用该资源。(我希望通过 在c++中应用互斥锁)作为此方法的一个缺点, 同步相当昂贵。也可以创建一个对象 它包含队列中所有作业的列表,可以是 辛格尔顿 我想了解的是,一个包含所有作

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

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

我想了解的是,一个包含所有作业列表的单例对象如何比同步队列更有帮助。他们会有什么不同呢

注:我知道你们中很少有人会质疑我的内容来源(这里是维基),但我还是想知道更多


谢谢。

< P>为什么你想“重新发明方向盘”而不是仅仅使用工业标准方法(或者是专门针对目标C++应用)?它们都基于偷工调度器,该调度器在两个方向上都能很好地扩展(比共享队列好得多),支持嵌套并行,从而解决了在创建自己的线程池或使用具有固定工作线程数的现有线程池(如中)时不可避免的可组合性问题.

你的问题到底是什么?编辑了一点。这是我的首要问题:-一个包含所有作业列表的单例对象比同步队列更能帮助我。它们到底有什么不同呢?我想你误解了这篇文章,它并不是说队列中的作业列表是同步的替代方案,你必须同步对多个线程使用的任何数据的访问。有什么我们可以帮助您更详细地理解的吗?这是否意味着这里唯一的区别是同步本身是一个更昂贵的调用,但是当通过单例对象存储作业列表来实现时,将是一种更快的方法?无论是否使用单例来存储队列,都必须同步对作业队列的访问。我不知道为什么这篇文章说你也可以创建一个对象,但是它与线程池模式无关。基本思想是,您有一个作业队列和一个线程池。每次线程空闲时,它都会将下一个作业从队列中拉出以执行。但重要的是,多个线程不要试图同时获取下一个作业,您必须同步对队列的访问,这样才不会发生这种情况。并非所有人都使用intel,甚至更少人使用MSVC。TBB是开源的可移植库,如果您想与ARM一起使用。@SergeyA,TBB可移植性的一个例子是,它通过OpenCV在手机应用程序中使用,通常是非英特尔硬件。电源如何?SPARC怎么样@SergeyA TBB由社区掌权。不确定SPARC,有人使用它吗?:)TBB当然可以接受任何新端口