【发布时间】:2012-11-20 15:14:39
【问题描述】:
我有一个使用 boost::thread 的地方(使用 boost::asio 的示例)
std::vector<boost::shared_ptr<boost::thread> > threads;
for (std::size_t i = 0; i < io_services_.size(); ++i)
{
boost::shared_ptr<boost::thread> thread(new boost::thread(
boost::bind(&boost::asio::io_service::run, io_services_[i])));
threads.push_back(thread);
}
如果我尝试将它与 std:thread 一起使用,则会出现编译错误:
std::vector<std::thread> threads;
for (std::size_t i = 0; i < this->ioServices.size(); ++i)
{
std::thread thread(&boost::asio::io_service::run, ioServices[i]); // compile error std::thread::thread : no overloaded function takes 2 arguments
threads.push_back(std::move(thread));
}
【问题讨论】:
-
您的编译错误不包含对
boost::bind的调用? -
@BartekBanachewicz 更新了标题,因为这与 boost::tread 和 std::thread 之间的区别有关
-
@Chad tnx 指出了这一点。更新
-
我仍然没有看到更新。您正在调用
std::thread构造函数,并带有两个它不期望的参数。如果您使用这两个参数构造了一个boost::bind对象,我希望它能够编译并工作。