C++11 C+中的TBB等价物+;11

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框架

在C++11中是否有与这些TBB类型等效的实现:

  • tbb::可枚举线程特定
  • 互斥
  • 互斥锁:作用域锁定
如果没有:我可以如何转换它们(链接到好的TBB摘要、教程等)或者我是否需要将自己转换成整个TBB文档

(否。将TBB插入项目不是一个选项。)


编辑:忘了提tbb::this_tbb_thread::对此有何建议?

我建议先让旧的代码库工作,然后再进行更改

没有标准等效项


mutex\u t
mutex\u t::scoped\u lock
可以替换为和。

在C++11中,代码中的TBB功能几乎等同(或者您可以简单地创建一个)

  • 是线程本地存储的一个实现。它可以使用平台的本地存储,也可以使用服务器来保存实例。默认情况下,不使用平台线程本地存储密钥。C++11具有限定符,因此根据
    可枚举线程特定的
    的使用方式,您可以将其替换为相同类型的
    线程本地
    版本。如果您使用该结构来持久化数据,或者在线程本地上下文之外访问数据,那么您可能需要完成一些工作
  • mutex\u t
    是一种通用的互斥类型,可以用
    std::mutex
    替换,尽管开发人员可能有(如
    spin\u mutex
    )会受到替换的影响
  • scoped_lock
    是一个在构造时锁定互斥锁的对象,当退出作用域时,将解锁互斥锁(使其有点异常友好)。如果您是C++17,则可以使用,否则可以自己使用
  • 我已经有一段时间没有阅读收益率文档了。我相信在放弃时间片之前,实现会寻找其他可能的任务。可以使用释放时间片,但如果代码使用TBB构造,则行为可能会有所不同。事实上,您没有提到任何其他TBB内容,这对我来说意味着程序中没有任何内容,
    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字节互斥体需要大量的“欺骗”才能工作。)互斥体是类的一部分吗?如果是,请查看类偏移;也许您可以洗牌成员以最小化所需的对齐空间。