質問:プログラムにメイン スレッドが 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 における擬似クラスの一般的な使用法の詳細な説明
目次参照と反応参照反応的RefとReactiveの違いshallowRef と shallowRea...
目次1. 暗黙的な変換二重等号での変換ブール型変換「+」と「-」 2. 強制型変換' ...
CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...
HTML5 では、ヘッダー、フッター、ナビゲーションなどのセマンティック タグが追加されているため...
* 住所 - 住所* blockquote - ブロック引用* center - 中央揃えブロック*...
MySQLとElasticsearch間のデータ非対称性問題の解決策jdbc-input-plugi...
目次CentOS7をインストールする静的IPの設定viを使用してファイルを編集するCentOS7をイ...
以下のように表示されます。 nsenter -t 1 -m -u -n -i sh -c "...
目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...
1. 需要バックエンドは、フロントエンドがツリー構造(重複データなし)に変換するためのデータを提供し...
Yum (フルネームは Yellow dog Updater, Modified) は、Fedora...
<br />ソース コード内で表の構造を明確に区別するために、HTML 言語では、表のヘ...
質問: インデックスは作成されているのに、Like ファジー クエリがまだ遅いのはなぜですか?インデ...
目次1. 反応する基本的な使い方注目すべき機能クラスコンポーネント仮想DOMライフサイクルメソッドJ...
この記事では、チャット機能を簡単に実装するためのVue+Websocketの具体的なコードを参考まで...