【发布时间】:2020-01-22 08:59:36
【问题描述】:
我已经尝试了很多方法来寻找解决方案,但到目前为止找不到合适的方法。
我正在使用分离线程,因为我不希望我的主线程等待/阻塞新的子线程,因为它还有许多其他重要的事情要做。
我创建一个线程如下:
std::thread rsync_t(&PreCompile::RunPreCompileThr, obj, arg1, arg2);
rsync_t.detach();
现在,目标是定期检查这个分离的线程是否处于活动状态并正在运行。
我尝试了 future/promise 和异步的方式来做到这一点,但它需要 .get(),它类似于 join(),我不想要。
有什么建议吗?
提前致谢。
【问题讨论】:
-
不要分离,也不要等待 :) 使用正常的同步机制,如 mutex 和 condition_variable 进行信号传输。在程序退出之前加入线程。
-
是的,是的。那么有什么办法可以做到这一点吗?两个独立的线程并行运行,一个线程想知道另一个线程的状态。
-
@user1228352 我不明白是什么让你认为你需要
detach让线程并行运行。一旦你构造了std::thread,另一个线程就会开始运行。 唯一您没有并行性的情况是如果您调用join立即。但是你为什么要这样做呢?
标签: c++ multithreading c++11