我有一个旧的代码库,我想在新的环境中使用一些实现。旧的基础使用了我真的不熟悉的TBB框架。
C ++ 11中是否有与这些TBB类型等效的实现:
如果不是,那么:我如何转换它们的任何技巧(指向良好的TBB摘要,教程等的链接),还是我需要自己研究整个TBB文档?
(并且不可以。将TBB插入项目不是一种选择。)
编辑:忘记提及tbb :: this_tbb_thread ::对此有任何建议吗?
代码中的TBB功能在C ++ 11中确实具有几乎等效的功能(或者您可以简单地创建一个功能)。
enumerable_thread_specific<T>
是线程本地存储的实现。它可以使用平台的本地存储,也tbb::concurrent_vector
可以保存实例。默认设置为不使用平台线程本地存储密钥。C ++ 11具有thread_local
限定符,因此,根据enumerable_thread_specific
使用的方式,您可以将其替换thread_local
为相同类型的版本。如果您正在使用该结构来保留数据或在线程本地上下文之外访问数据,则可能需要为您完成工作。mutex_t
是通用的互斥锁类型,可以用替换std::mutex
,尽管开发人员可能选择了spin_mutex
受替换影响的特定实现(例如)。scoped_lock
是一个RAII对象,可在构造上锁定互斥锁,离开范围时将解锁该互斥锁(使其具有一定的异常友好性。)std::lock_guard<std::mutex>
如果您使用的是C ++ 17,则可以使用它,否则可以自己滚动。std::this_thread::yield()
重新分配时间片,但是如果代码使用的是TBB构造,则行为可能会有所不同。您没有提到任何其他TBB东西的事实对我来说意味着程序中没有任何东西,并且与tbb::yield()
做了相同的事情std::this_thread::yield()
。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句