我有一个代码库,它使用了多个分离的boost::thread
实例作为folllows
boost::thread th( boost::bind(&myFunc,var1, var2 ));
我可以简单地进行搜索替换并开始使用std::thread
吗?
我是否需要将boost::bind
替换为std::bind
或者这是不必要的?
(到目前为止,我发现我可以使用boost::shared_ptr
和std::shared_ptr
进行搜索替换boost::scoped_ptr
,而不会出现任何问题。
我的平台是Windows 7上的Visual Studio 11。
答案 0 :(得分:2)
我可以简单地进行搜索替换并开始使用std :: thread吗?
当前版本的boost::thread
有一些不属于std::thread
的功能:
yield()
和sleep()
(已弃用)请参阅标有EXTENSION
的{{3}}。如果您没有使用任何这些,那么它应该是直接替代。
正如评论中所提到的,boost::thread
的旧版本在销毁方面有不同的行为。如果它仍然可以连接,它们会分离线程; std::thread
和当前boost::thread
来电std::terminate
。
我是否需要将
boost::bind
替换为std::bind
或者这是不必要的?
这不是必要的; thread
可以被赋予任何可调用类型。它也没有必要使用bind
,因为它有一个可变构造函数:
std::thread th(&myFunc, var1, var2);