libuv工作线程或工作队列健康检查?

Gle*_*Low 7 c++ events multithreading node.js libuv

在libuv中,最终可能会因为工作量太大或代码错误而将工作线程占用.是否有一个简单的函数可以检查工作线程或线程队列的运行状况?它不一定是100%确定性的,毕竟不可能确定工作线程是挂在慢速代码还是无限循环上.

因此,以下任何启发式方法都会很好:

  • 尚未处理的排队项目数.如果这个太大,则可能意味着工作线程忙或挂.

  • libuv是否有任何线程查杀机制,如果工作线程在n秒内没有检查,它会被终止吗?

小智 2

libuv 本身不存在该功能,而且我不知道有任何 OSS 提供类似的功能。

就终止机制而言,libuv 中没有内置机制,但http://nikhilm.github.io/uvbook/threads.html#core-thread-operations建议:

一个设计良好的程序将有一种方法来终止已经开始执行的长时间运行的工作程序。这样的工作人员可以定期检查只有主进程设置为信号终止的变量。