在libuv中,最终可能会因为工作量太大或代码错误而将工作线程占用.是否有一个简单的函数可以检查工作线程或线程队列的运行状况?它不一定是100%确定性的,毕竟不可能确定工作线程是挂在慢速代码还是无限循环上.
因此,以下任何启发式方法都会很好:
>尚未处理的排队项目数.如果这个太大,则可能意味着工作线程忙或挂.
> libuv是否有任何线程查杀机制,如果工作线程在n秒内没有检查,它会被终止?
解决方法
libuv本身不存在该函数,我不知道任何OSS提供类似的东西.
就杀戮机制而言,没有任何内容可以融入libuv,但http://nikhilm.github.io/uvbook/threads.html#core-thread-operations建议:
A well designed program would have a way to terminate long running workers that have already started executing. Such a worker could periodically check for a variable that only the main process sets to signal termination.