質問:プログラムにメイン スレッドが 1 つしかなく、 fork が呼び出された場合、 fork によって作成された子プロセスにもスレッドが 1 つしか存在しないことに注意してください。 マルチスレッド プログラムに fork を組み込むとどうなるでしょうか? 試してみましょう: ケース(1)子スレッドを作成する前にフォークするコード: #include <stdio.h> #include <pthread.h> #include <unistd.h> void* pthread_fun(void* 引数) { printf("fun = %d\n", getpid()); pthread_exit(NULL); } int メイン() { フォーク(); pthread_t ID; pthread_create(&id, NULL, pthread_fun, NULL); printf("main_pid = %d\n", getpid()); pthread_join(id, NULL); 0を返します。 } 結果: フォークされた子プロセスも独自の子スレッドを作成します ( ケース(2)子スレッドを作成した後にフォークするコード: #include <stdio.h> #include <pthread.h> #include <unistd.h> void* pthread_fun(void* 引数) { printf("fun = %d\n", getpid()); pthread_exit(NULL); } int メイン() { pthread_t ID; pthread_create(&id, NULL, pthread_fun, NULL); フォーク(); printf("main_pid = %d\n", getpid()); pthread_join(id, NULL); 0を返します。 } 結果: 子スレッドを作成した後、子プロセスが作成されます。このとき、フォークした子プロセスはフォーク後のコードのみを実行します ( ケース(3)子スレッドの分岐コード: #include <stdio.h> #include <pthread.h> #include <unistd.h> void* pthread_fun(void* 引数) { フォーク(); printf("fun = %d\n", getpid()); pthread_exit(NULL); } int メイン() { pthread_t ID; pthread_create(&id, NULL, pthread_fun, NULL); printf("main_pid = %d\n", getpid()); pthread_join(id, NULL); 0を返します。 } 結果: 結論は:どのスレッドがフォークされるかによって、フォーク後に作成された子プロセスはこのスレッドをメインスレッドとして使用し、このスレッドの後のコードを実行します。 Linux のマルチスレッドにおけるフォークに関するこの記事はこれで終わりです。Linux のマルチスレッド フォークに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS3 における擬似クラスの一般的な使用法の詳細な説明
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
前回の記事はBootstrap CSS部分の簡単なレビューであり、多くの詳細が見落とされていました。...
まずpostcss-pxtoremをインストールします: npm install postcss-p...
フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...
背景前景要素から特定の色を継承する影の効果を作成する方法を知りたいと思ったことはありませんか?方法に...
目次背景1. 思考分析2. ページ構成2.1 HTML レイヤー2.2 CSS レイヤー2.3 JS...
VMware Workstation を使用して Windows 10 で仮想マシンを開くと、VMw...
目次親コンポーネントは子コンポーネントと通信します子コンポーネントは親コンポーネントと通信しますコン...
この質問は、MySQL の権限に関する WeChat グループのネットユーザー間の議論です。次のよう...
通常、国喪の日、大地震の日、清明節には、ウェブサイト全体を灰色にして、故人への哀悼の意を表します。そ...
この記事の例では、ショッピングカート機能を実装するためのjQueryの具体的なコードを参考までに共有...
序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...
ユーザーがプライバシーを意識するようになり、オンライン トラッキングに対する予防策を強化するにつれて...
目次1. 需要1. 需要2. SDKパラメータ設定1. ディレクトリ構造3. コードの実装1. バッ...
01. コマンドの概要dirname - ファイル名からディレクトリ以外のサフィックスを削除しますd...