以下程序会产生分段错误,但我在代码中看不到任何未定义的行为。它已经与GCC 4.7.3一起编译。你知道故障的原因还是可能的解决方法?此外,v1.53中似乎不存在boost::future
,所以我应该依赖boost::unique_future
。我无法升级到上面的任何版本> 1.53我真的需要" make_ready_at_thread_exit()"特征
#define BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK
#include <boost/thread.hpp>
#include <boost/thread/future.hpp>
namespace th = boost;
struct S {
th::packaged_task<void()> task;
th::unique_future<void> future;
void start();
void stop();
};
void S::start() {
task = th::packaged_task<void()>{ [this] () {}};
future = task.get_future();
task.make_ready_at_thread_exit();
}
void S::stop() {
future.wait();
}
int main() {
S s;
s.start();
s.stop();
}