私は、プロセスがリソース所有権と実行可能命令の単位であることを理解しています。スレッドを使用すると、プロセスはリソースを複数の実行と共有できます。また、プロセス全体に関連するすべてのオーバーヘッドにより、OSがスレッドをスケジュールするのが簡単になります。
しかし、なぜthreadなのか? stringへの参照または実行のインターリーブはありますか?それでも、これは私の考えでは直感的な用語ではありません。
辞書を見たことがありますか?単語threadには、過去の縫製という意味があります。
3:継続的または引き出されたもの:
a:パーツをシーケンスで接続する一連の推論または一連の思考(アイデアまたはイベントに関して)
複数のスレッドがねじられて、太くて強いコードを形成する方法を見たことがありますか?
つまり、すべてのスレッドは独立していますが、すべてのスレッドが協力して最終的な計算結果を生成します。さらに、テキスタイルスレッドの場合と同様に、コード全体の構造を損なうことなくスレッドを切断できます。
tl; dr:「スレッド」は適切な比喩なので、スレッドと呼ばれます。
スレッドを開始するときは、オペレーティングシステムに依存して処理時間を割り当て、スレッドを実行できるようにします。スレッドの実行中、プロセッサ(またはコア)はスレッドにすべての注意を向けます。オペレーティングシステムがコアを別のスレッドに切り替えると、他のスレッドが処理されている間、スレッドは実行を停止します。
そのため、実行はあちこちでジャンプします。しかし、これらのジャンプにもかかわらず、マシン命令のセットの整合性はそのまま残ります。これは、その状態とそれが対話するオブジェクトの状態を保護するためにフェンスと同時実行メカニズムを構築するためです。
したがって、スレッドとは、特定のスレッドでの命令の実行ではなく、作成したスレッド内で最終的に実行される命令を指します。言い換えると、各スレッドは、オペレーティングシステムが実行しているすべてのコンテキストスイッチを考慮しなくても、個々のマシンまたはエージェント(軽量プロセスと呼ぶ)と見なすことができます。同時に実行します。
言い換えると、OSがバックグラウンドで実行するすべてのジャンプにもかかわらず、スレッド(軽量プロセスで実行している一連の操作)と呼ばれるものは、同じ一連の操作と考えることができます。必要な同時実行性保護を採用していると想定して、スレッドを生成しなかった場合。
この説明が重すぎて抽象的であると思われる場合は、Redditのようなフォーラムのスレッドを考えてください。新しいディスカッションから分岐できます。各ディスカッションは独自のスレッドです。スレッド間を行き来することができます。ただし、各スレッドは、個々の会話として構造的な整合性を維持します。
さまざまなものが水を濁らせているため、「スレッド」という用語の出所を解く(完全に意図したものにする)ことは困難です。
フォーラムまたはメールの意味でのスレッドの使用は、ほぼ確実に「スレッドの会話」というフレーズに由来します。これは this によると、1593年までさかのぼります。
this リンクによれば、スレッドは実際には「スレッド」と呼ばれていなかったため、スレッドは70年代またはおそらく80年代初頭まで呼ばれていなかったため、共有メモリプロセスの実装は、今日のヘビーウェイトプロセスと私たちが考えるものを実際に先取りしています。関連する形式の共有メモリマルチプロセッシングが「ファイバー」と呼ばれていることを考えると、「スレッド」という言葉は、織物やその他の繊維関連の類推を連想させるものと思われます。
「推論の糸」または「思考の糸」と関係があると思います。
プロセスとは対照的に、スレッドはメモリを共有します。したがって、プロセスが自分の心(記憶)を持つ人に例えられる場合、スレッドはその心の中の1行の考えに例えることができます。
プログラミングにおける糸の類推をどこかで読みました。CPUをミシン針、糸を実際の紐と考えてください。さて、あなたが複数のミシン針を持っているが、1本の糸だけの場合。あなたは思いませんか、それは非常に非効率になります。他のCPU /ミシン針は、スレッドが使用可能になるのを待っています。ただし、複数のスレッドがある場合、ジョブは短時間で実行できます。