C++11 C+中的TBB等价物+;11
我有一个旧的代码库,我想在新环境中使用一些实现。老基地使用了我非常不熟悉的TBB框架 在C++11中是否有与这些TBB类型等效的实现:C++11 C+中的TBB等价物+;11,c++11,tbb,C++11,Tbb,我有一个旧的代码库,我想在新环境中使用一些实现。老基地使用了我非常不熟悉的TBB框架 在C++11中是否有与这些TBB类型等效的实现: tbb::可枚举线程特定 互斥 互斥锁:作用域锁定 如果没有:我可以如何转换它们(链接到好的TBB摘要、教程等)或者我是否需要将自己转换成整个TBB文档 (否。将TBB插入项目不是一个选项。) 编辑:忘了提tbb::this_tbb_thread::对此有何建议?我建议先让旧的代码库工作,然后再进行更改 没有标准等效项 mutex\u t和mutex\u t
- tbb::可枚举线程特定
- 互斥
- 互斥锁:作用域锁定
编辑:忘了提tbb::this_tbb_thread::对此有何建议?我建议先让旧的代码库工作,然后再进行更改 没有标准等效项
mutex\u t
和mutex\u t::scoped\u lock
可以替换为和。在C++11中,代码中的TBB功能几乎等同(或者您可以简单地创建一个)
可枚举线程特定的
的使用方式,您可以将其替换为相同类型的线程本地
版本。如果您使用该结构来持久化数据,或者在线程本地上下文之外访问数据,那么您可能需要完成一些工作mutex\u t
是一种通用的互斥类型,可以用std::mutex
替换,尽管开发人员可能有(如spin\u mutex
)会受到替换的影响scoped_lock
是一个在构造时锁定互斥锁的对象,当退出作用域时,将解锁互斥锁(使其有点异常友好)。如果您是C++17,则可以使用,否则可以自己使用TBB::yield()
与std::this_thread::yield()
的作用相同我建议先让旧的代码库工作,然后再进行更改。谢谢。旧代码库正在旧系统上工作。有没有关于如何翻译螺纹类型的建议?(:顺便说一句:忘了提到tbb::this_tbb_thread::yield。关于这个有什么建议吗?@Herget提示:标准库在东西前面加上
std
,还有一个叫做google的地方,你可以在那里键入std::yield
,它会告诉你是否存在这样的东西。@kfsone是的,我听说过这个地方。对于findin来说应该很好但我的问题是我不知道TBB框架,也不知道它是否有std版本所没有的特殊实现。我认为最初的开发者使用它是有原因的,而不是因为它看起来更漂亮;)@Nicol Bolas yeah似乎是这样的。。。谢谢你的帮助!谢谢你的回答。不幸的是,他们使用了spin_互斥,这会影响代码,因为现在超过了特定的页面大小。你知道spin_互斥体的替代品吗?互斥体家族都有相同的基本属性(互斥);自旋互斥是快速的、不公平的,占用CPU。我不知道为什么它会导致页面大小出现问题,除非它是类的成员。互斥体是内存对齐的,因此具有最佳性能(在2字节边界上对齐的4字节互斥体需要大量的“欺骗”才能工作。)互斥体是类的一部分吗?如果是,请查看类偏移;也许您可以洗牌成员以最小化所需的对齐空间。