【发布时间】:2011-11-20 20:45:35
【问题描述】:
我想在后台启动一个线程,如果它没有完成,我想在一定时间后停止它。主要问题是,在等待线程完成或计时器到达最后期限时,程序不应阻塞。保证这一点很重要。
我尝试了this example,但在等待timed_join 时,它阻塞了。我必须宣布一个警告,有一些计算正在进行中。
void CallbackReceived() {
boost::posix_time::time_duration timeout = boost::posix_time::milliseconds(500);
boost::thread thrd(&Foo);
if (thrd.timed_join(timeout)) {
//finished
} else {
//Not finished;
}
}
你有什么建议吗?
【问题讨论】:
-
离开我的头顶,'宣布警告,等待完成之前','让另一个后台线程负责监视第一个','更改第一个线程,以便它知道时间限制,可以自行中止..'
-
启动另一个调用
timed_join的线程。 -
@forsvarir 我会回答这个问题。
标签: c++ multithreading boost-thread