[英]How do I know if a boost thread is done?
我使用boost :: thread来处理队列中的消息。 当第一条消息出现时,我启动了一个消息处理线程。 当第二条消息出现时,我检查消息处理线程是否完成。
如果它完成了我开始一个新的如果它没有完成我什么都不做。
我怎么知道线程是否完成? 我尝试使用joinable()但它不起作用,因为当线程完成时,它仍然可以连接。
我也试图立即中断进程,并在我的线程末尾添加一个中断点,但它没有用。
谢谢
编辑:
我想让我的线程在不确定的时间内休眠,并在触发信号时唤醒。
这样做的意思是boost :: condition_variable
据我所知,你应该使用join()方法等待线程执行的结束。 你可以使用timed_join()超时使用它。
您可以使用interrupt()中断线程。 在这种情况下,如果执行到达中断点(boost :: this_thread :: sleep()或boost :: this_thread :: interruption_point()),则在线程内部将发生异常。 您在线程内捕获异常,然后可以关闭它。
您是否尝试使用boost :: this_thread :: get_id()检查get_id()。 如果匹配则线程不存在。 但只有退出线程才会发生这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.