たとえば、私は2 つのスレッドを持っています。サーバーをメインスレッド (スレッド 1) から停止したい。
スレッド 1: メイン プログラム
スレッド 2: TcpServer
libuv ライブラリから:
/*
* This function will stop the event loop by forcing uv_run to end
* as soon as possible, but not sooner than the next loop iteration.
* If this function was called before blocking for i/o, the loop won't
* block for i/o on this iteration.
*/
UV_EXTERN void uv_stop(uv_loop_t*);
つまりuv_stop(tcp_server_loop)
、メイン スレッドで呼び出し、tcpserver にイベントがないためにサーバー ループがブロックされた場合、サーバーは何らかのイベントが発生するまでループ内に留まります。(おそらくuv_stop
、ループがブロック モードに移行して新しいイベントを待機する前に呼び出されたかどうかを確認します)。