std :: thread是替换boost :: thread的一个drop吗?

时间:2012-11-15 16:27:02

标签: c++ boost

我有一个代码库,它使用了多个分离的boost::thread实例作为folllows

boost::thread th( boost::bind(&myFunc,var1, var2 ));

我可以简单地进行搜索替换并开始使用std::thread吗?

我是否需要将boost::bind替换为std::bind或者这是不必要的?

(到目前为止,我发现我可以使用boost::shared_ptrstd::shared_ptr进行搜索替换boost::scoped_ptr,而不会出现任何问题。

我的平台是Windows 7上的Visual Studio 11。

1 个答案:

答案 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);