Linux にスレッドが存在するかどうかを確認する方法

WBOY
リリース: 2022-04-06 17:15:01
オリジナル
3769 人が閲覧しました

mysql では、「pthread_kill()」関数を使用して、スレッドが存在するかどうかを判断できます。この関数は、指定された ID を持つスレッドに sig シグナルを送信して、スレッドがまだ生きているかどうかを判断できます。構文は「int pthread_kill(pthread_t thread, int sig)」です。

Linux にスレッドが存在するかどうかを確認する方法

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux にスレッドが存在するかどうかを確認する方法

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 ビデオ チュートリアル

以上がLinux にスレッドが存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート