gpt4 book ai didi

c++ - 我怎么知道boost线程是否完成?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:04 29 4
gpt4 key购买 nike

我正在使用 boost::thread 来处理队列中的消息。当第一条消息到来时,我启动一个消息处理线程。当第二条消息到来时,我检查消息处理线程是否完成。

如果完成了我会开始一个新的如果没有完成,我什么都不做。

我怎么知道线程是否完成了?我尝试使用 joinable() 但它不起作用,因为当线程完成后,它仍然可以连接。

我也试过一次性打断进程,在我的线程末尾添加一个中断点,但是没有用。

谢谢

编辑:

我想让我的线程休眠一段不确定的时间,并在触发信号时唤醒。

这样做的意思是 boost::condition_variable

最佳答案

据我所知,您应该使用 join() 方法来等待线程执行结束。您可以将它与 timed_join() 一起使用。

您可以使用 interrupt() 来中断线程。在这种情况下,如果执行到达中断点( boost::this_thread::sleep() 或 boost::this_thread::interruption_point() ),线程内部将发生异常。您可以在线程内捕获异常,然后可以将其关闭。

关于c++ - 我怎么知道boost线程是否完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2801426/

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