本土工作队与英特尔TBB

Car*_*s00 7 c c++ multithreading gcc tbb

我们正在考虑使用哪个并行框架C/C++.我们有一些非常特殊的条件,并不是100%肯定,例如TBB可以添加"更多"的东西.

  • 有正在N运行的线程和一个同步的工作队列(使用pthread互斥锁).
  • 我们的工作优先(int).
  • 作业被放入队列,空闲线程将获得具有最高优先级的作业.

重复此过程直到队列为空.

那么,现在,我想知道像TBB(线程构建块)这样的框架是否可以从算法的角度为这种特殊场景提供更多?(所以,内部......)

Ale*_*mez 5

TBB 4提供concurrent_priority_queue(参考手册中的搜索"优先级" ).此外,如果您可以设计具有任务而不是线程的程序,那么使用TBB是很好的.实际上,它提供了很多东西来描述任务之间的依赖关系.此外,TBB似乎相当便携,如果它对你很重要.


Tud*_*dor 3

在我看来,您可以通过用更强大的东西替换沉重的互斥体来获得收益,例如 spin_rw_mutex: http: //threadingbuildingblocks.org/files/documentation/a00163.html。由于大多数插入/删除操作都很快,因此您可以从非阻塞锁中受益更多。