スレッド限り並行プログラミング(理論)
スレッドとは何ですか
スレッドは:名前が示すように、組立ライン作業のプロセスがあり、パイプラインは、ワークショップに属している必要があり、作業工程のワークショップは、プロセスがあります
したがって、プロセスは、一緒に(プロセスだけリソースユニットまたはリソースのセット)リソースを集中するために使用され、ユニットスレッドの実装のCPUです。
マルチスレッド(すなわち、コントロールの複数のスレッド)の概念は、プロセス内の制御の複数のスレッドは、複数のスレッドは、植物が共有されるリソースプラント内の複数のラインに対応する、プロセスのアドレス空間の制御を共有することです。(複数のスレッドを開く工程(同じメモリ空間を共有するプロセス))
例えば、北京地下鉄と上海地下鉄は、異なるプロセスであり、北京地下鉄ライン13は、スレッド、すべて北京の地下鉄路線が北京の地下鉄は、例えば、すべての乗客がすべての行を引っ張ることができるすべてのリソースを共有しています。
注意:
したがって1、実際の作業は、スレッド(スレッド内の処理)となっているプロセス
2.プロセスはただお互いにリソースを単離するために使用し、スレッドが彼のCPUを動員して、本当に責任があります
小さなスレッドを作成するコスト
オーバーヘッドはスレッドよりもはるかに大きいプロセスを作成しますか?
当社のソフトウェアは、行数、組立ライン作業は電源を必要と工場、CPUのみ(シングルコアCPU)である電源の場合
ワークショップは、プロセス、ワークショップ少なくとも一つの組立ライン(プロセス少なくとも一つのスレッド)であります
プロセスを作成し、(少なくともこの空間に組立ラインを構築し、アプリケーション空間)のワークショップを作成することです
内蔵スレッド、小さなオーバーヘッドを作成するので、ちょうど、ワークショップではスペースのために適用する必要がパイプラインを構築していません
スレッドとプロセスの違い
1.プロセスのコストよりも小さなスレッドを作成します(スペース、およびプロセス内のスレッドを持っています開かれたプロセスを、スペースをオープンする必要はありません)
プロセスの内部に、内部共有のプロセスで開いている必要があります。2.マルチスレッドリソース
3.ファストスタート・スレッド
のプロセスのうち同一のプロセス・リソースとメモリ空間の下工程4.複数のスレッドで共有がから単離される
N- = 100
DEF(ワーク):
グローバルN-
N- = 100
開口場合単離された、しないn個のプロセスは、互いに独立しており、スレッドが共有リソースでありますWINSを開くプロセスでは、の親プロセスはコピーされません子供
Linuxでのオープンプロセスは、子が親プロセスの完全なコピーになりますスレッド内の前記スレッド間通信は、単に求めできる場所のプロセス
なぜあなたはマルチスレッドを使うのですか
マルチスレッドは、プロセス内で複数のスレッドを開くために指し、単に言う:複数のタスクは、アドレス空間を共有している場合は、プロセス内で複数のスレッドを開く必要があります。詳細は、4つのポイントに分け話すこと:
- マルチスレッドは、プロセスのアドレス空間を共有します
2. 10〜100倍高速であることをプロセスを作成するよりも、スレッドを作成し、プロセスは多くのオペレーティングシステムでは、取り消すことができるよりも作成する方が簡単で軽量スレッドよりもプロセスをよりスレッド、多数のスレッドでダイナミックかつ迅速に変更する必要がありますこの機能は便利です
前記複数のスレッドは、CPU集約的であり、その後補強性能を得ることができないが、計算の大量およびI / O処理が多数存在する場合、複数のスレッドはれる、これらの活動が重なる可能に実行された場合プログラムの実行を高速化。
マルチCPUシステム4.、マルチコアの使用を最大化するために、あなたは、プロセスへのオープンオーバーヘッドよりもはるかに小さい複数のスレッドを、開くことができます。(これは、Pythonには適用されません)