gpt4 book ai didi

c++ - 一定时间后中断线程,等待时不会阻塞

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:23 24 4
gpt4 key购买 nike

我想在后台启动一个线程,如果它没有完成,我想在一定时间后停止它。主要问题是,在等待线程完成或计时器到达截止日期时,程序不应阻塞。确保这一点很重要。

我试过了 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。

main
|
|---thread
| |
| |-----thread
| |
| |
| |
| join<------
|
|

但是如果你只是想要一个警告,把它放在开始线程之前。如果它是一个图形应用程序并且您仍想处理事件,则必须让您的主线程可用,如上所示。

关于c++ - 一定时间后中断线程,等待时不会阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7481868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com