如何检查a std::thread是否仍在运行(以独立于平台的方式)?它缺乏一种timed_join()方法,joinable()并不适用于此.
我想std::lock_guard在线程中使用a锁定互斥锁并使用try_lock()互斥锁的方法来确定它是否仍然被锁定(线程正在运行),但对我来说似乎不必要的复杂.
你知道更优雅的方法吗?
更新:要明确:我想检查线程是否干净地退出.为此,"悬挂"线程被认为正在运行.
请注意,这与调用不同valid()。valid()指示将来是否完全具有有效的共享状态,但是我想知道的是是否已设置了将来的值(即通过std::promise::set_value)。
有一种wait_for方法,但是我根本不希望调用线程阻塞,我只想检查值的存在。从理论上讲,我可以将wait_for持续时间设为零,但我不知道这是否实际上是这样做的首选方式,而且我不确定wait_for以零持续时间调用时的预期行为是什么。