mysql では、「pthread_kill()」関数を使用して、スレッドが存在するかどうかを判断できます。この関数は、指定された ID を持つスレッドに sig シグナルを送信して、スレッドがまだ生きているかどうかを判断できます。構文は「int pthread_kill(pthread_t thread, int sig)」です。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
pthread_kill:
名前に驚かないでください。pthread_kill は kill ではありませんが、スレッドにシグナルを送信します。 signal を覚えていますか? ほとんどのシグナルのデフォルトのアクションはプロセスの実行を終了することなので、signal() を使用してシグナルをキャッチし、処理関数を追加する必要があります。
int pthread_kill(pthread_t thread, int sig);
指定された ID を持つスレッドに sig シグナルを送信します。スレッド コードで処理されない場合、プロセス全体がシグナルのデフォルトの動作に従って影響を受けます。 SIGQUIT をスレッドに送信しますが、スレッドは送信しません。 信号処理関数が実装されていない場合、プロセス全体が終了します。
同じことが pthread_kill(threadid, SIGKILL) にも当てはまり、プロセス全体を強制終了します。
正しい動作を取得したい場合は、スレッドに signal(SIGKILL, sig_handler) を実装する必要があります。
したがって、int sig のパラメータが 0 でない場合、何をすべきかを正確に理解し、スレッドの信号処理関数を実装する必要があります。そうしないと、プロセス全体に影響を及ぼします。
OK、int sig が 0 の場合、これは予約されたシグナルであり、その機能はスレッドがまだ生きているかどうかを判断することです。
pthread_kill の戻り値を見てみましょう:
成功: 0
スレッドは存在しません: ESRCH
不正なシグナル: EINVAL
したがって、pthread_kill(threadid,0) は非常に便利です。
上記のコードは、スレッドがまだ生きているかどうかを判断できます。
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がLinux にスレッドが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。