ホームページ >よくある問題 >同じプロセス内のスレッドが共有しない部分は何ですか?

同じプロセス内のスレッドが共有しない部分は何ですか?

尚
オリジナル
2019-10-22 16:03:5114697ブラウズ

同じプロセス内のスレッドが共有しない部分は何ですか?

同じプロセス内のスレッドが共有しない部分は、スレッドのスタックです。

スレッドによって共有される環境には、プロセス コード セグメント、プロセスの公開データ (これらの共有データを使用すると、スレッドは相互に簡単に通信できます)、プロセスによって開かれるファイル記述子、およびシグナルが含まれます。プロセッサ、プロセスの現在のディレクトリ、プロセスのユーザー ID とプロセス グループ ID。

プロセスには多くの共通点がありますが、独自の個性もあります。これらの特性により、スレッドは同時実行を実現できます。

1. スレッド ID

各スレッドには、このプロセス内で一意の独自のスレッド ID があります。プロセスはこれを使用してスレッドを識別します。

2. グループ値の登録

スレッドは同時に実行されるため、各スレッドには独自の異なる実行手がかりがあります。 、将来再び切り替えられたときにスレッドを復元できるように、元のスレッドのレジスタ セットの状態を保存する必要があります。

3. スレッド スタック

#スタックは、スレッドが独立して実行されるようにするために必要です。スレッド関数は関数を呼び出すことができ、呼び出される関数は層ごとにネストできるため、関数呼び出しが他のスレッドの影響を受けずに正常に実行できるように、スレッドには独自の関数スタックが必要です。

4. エラーリターンコード

同じプロセス内で同時に多数のスレッドが実行されているため、システム構築後に特定のスレッドが errno 値を設定する可能性があります。電話をかけ、その過程で スレッドはまだこのエラーを処理しておらず、この時点で別のスレッドがスケジューラによって動作させられるため、エラー値が変更される可能性があります。したがって、異なるスレッドには独自のエラー戻りコード変数が必要です。

5. スレッドのシグナル マスキング コード

各スレッドは異なるシグナルに関心があるため、スレッドのシグナル マスキング コードはスレッド自体によって管理される必要があります。ただし、すべてのスレッドは同じシグナル ハンドラーを共有します。

6. スレッドの優先順位

スレッドはプロセスと同様にスケジュールする必要があるため、スケジュールに使用できるパラメーターが必要です。このパラメーターはスレッドの優先順位です。

以上が同じプロセス内のスレッドが共有しない部分は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:devc++の使い方次の記事:devc++の使い方