std::thread是boost::thread的替代品吗?



我有一个代码库,它使用许多分离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);

最新更新