gpt4 book ai didi

c - 如何检查当前是否有任何线程正在运行

转载 作者:行者123 更新时间:2023-11-30 18:08:54 25 4
gpt4 key购买 nike

我知道有一个用于多进程的

 waitpid(-1,WNOHANG,NULL)

这是非阻塞函数调用,用于检查当前是否有任何子进程正在处理

但是有没有类似的lib函数来检查多线程?

我想做的就是检查当前是否有任何线程,如果没有则重置一些全局值。

最佳答案

that is non-blocking function call to check if there is any child process currently working on

错了。这是一个检查是否有任何子进程尚未终止的调用。它不仅检查而且还收获终止的 child (如果有的话)。 children 可能会处于任何可能的状态,比如陷入僵局(我的书上的情况远非有效)。

All i want to do is check if there is any thread currently on, if not reset some global values.

也许您应该在这里发帖询问为什么要这样做。听起来你做了一些非常错误的事情。

如果您还没有为您的线程执行 pthread_join(),则意味着您的线程已经执行了 pthread_detach()。如果添加到线程 pthread_detach() 没有问题,我认为向线程添加一些额外的代码来识别它们已经(几乎)终止(例如 sem_post())是没有问题的,以便 main() 可以注意到线程已终止(例如通过调用 sem_trylock())。

如果可移植性不是必需的,那么也可以尝试定期查询进程的操作系统线程数。

尽管在我看来,在程序中包含一些具有未定义生命周期的线程,并且与主线程没有任何适当的同步,仍然是错误的。

关于c - 如何检查当前是否有任何线程正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3076950/

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