1

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

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

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

我是否也需要更换boost::bind或者std::bind那是不必要的?

(我发现到目前为止我可以boost::shared_ptrstd::shared_ptrboost::scoped_ptr用搜索替换没有任何问题。std::unique_ptr

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

4

1 回答 1

2

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

当前版本的boost::thread有一些没有的功能std::thread

  • 加入超时
  • 线程属性
  • 中断
  • yield()sleep()(已弃用)

请参阅boost 文档,它们在其中被标记EXTENSION。如果您不使用其中任何一个,那么它应该是直接替代品。

正如评论中提到的,旧版本的boost::thread破坏行为不同。如果线程仍然可以连接,他们会分离线程;std::thread和当前boost::thread通话std::terminate

我是否也需要更换boost::bind或者std::bind那是不必要的?

那没有必要;thread可以给定任何可调用的类型。它也根本不需要使用bind,因为它有一个可变参数构造函数:

std::thread th(&myFunc, var1, var2);
于 2012-11-15T16:42:51.297 回答