我有一个代码库,它使用许多分离boost::thread
实例作为folllows
boost::thread th( boost::bind(&myFunc,var1, var2 ));
我可以简单地进行搜索替换并开始使用std::thread
吗?
我是否需要也用std::bind
替换boost::bind
,或者这是不必要的?
(我发现到目前为止,我可以搜索将boost::shared_ptr
替换为std::shared_ptr
,并用std::unique_ptr
boost::scoped_ptr
没有任何问题。
我的平台是Windows 7上的Visual Studio 11。
我可以简单地进行搜索替换并开始使用 std::thread 吗?
当前版本的boost::thread
有一些未std::thread
的功能:
- 加入超时
- 线程属性
- 中断
-
yield()
和sleep()
(已弃用)
请参阅提升文档,其中它们标记为 EXTENSION
。如果您不使用其中任何一个,那么它应该是直接替换。
如评论所述,旧版boost::thread
在销毁方面有不同的行为。如果线程仍然可以连接,他们将分离线程; std::thread
和当前boost::thread
改为调用std::terminate
。
我是否需要也用
std::bind
替换boost::bind
,或者这是不必要的?
那不是必需的; thread
可以赋予任何可调用的类型。也根本不需要使用bind
,因为它有一个可变参数构造函数:
std::thread th(&myFunc, var1, var2);