我一直在玩弄 Boost 的未来,想知道它们是否是一种可接受且安全的方式来检查单个线程是否已完成。
我以前从未使用过它们,所以我编写的大部分代码都是基于Boost 的同步文档。
#include <iostream>
#include <boost/thread.hpp>
#include <boost/thread/future.hpp>
int calculate_the_answer_to_life_the_universe_and_everything()
{
boost::this_thread::sleep(boost::posix_time::seconds(10));
return 42;
}
int main()
{
boost::packaged_task<int> task(calculate_the_answer_to_life_the_universe_and_everything);
boost::unique_future<int> f(task.get_future());
boost::thread th(boost::move(task));
while(!f.is_ready())
{
std::cout << "waiting!" << std::endl;
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
std::cout << f.get() << std::endl;
th.join();
}
这似乎在等待 calculate_the_answer_to_life_the_universe_and_everything() 线程返回 42。这可能会出现问题吗?
谢谢!