質問:プログラムにメイン スレッドが 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 における擬似クラスの一般的な使用法の詳細な説明
序文Mac システムのターミナルでファイルの権限を変更するには、Linux の chmod コマンド...
この記事では、主に html + css を使用してサラウンド リフレクション ローディング エフェ...
Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...
1. 問題の症状バージョン: MySQL 5.6、従来の binlog ファイルと pos 方式を使...
目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...
以下に記録されているように、WIN10システムにMYSQLをダウンロードしてインストールするための詳...
バックエンドからフロントエンドまで、なんと悲劇なのでしょう。他の人の CSS を自分の jsp We...
Linux と Unix はマルチユーザー オペレーティング システムであるため、ファイルの権限と所...
1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...
1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...
共通コンベンションタグ自己終了タグ。閉じる必要はありません (例: img input br hr ...
序文SQL モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響...
最近、UTF8 エンコードの中国語 Zen Cart Web サイトをデバッグしているときに奇妙な現...
目次ステップ 1: root ユーザーとしてログインします。ステップ 2: 新しいデータ テーブルを...
先ほど、適応幅と高さが1:1の正方形を作成する方法について説明しました。 https://www.j...