[解決済み】「スレッド」とは(本当は)何ですか?)
質問
を理解するために、良い定義を見つけようとしています。 スレッド は本当にそうなのか。
私は何か明白なことを見逃しているに違いないと思うのですが、スレッドが何であるかについて読むたびに、それはほとんど循環的な定義、すなわち "a thread is a thread of execution" や "a way to divide into running tasks" のようです。ええと......。え?
私が読んだ限りでは、スレッドというのは本当は 何か プロセスのような具体的な 実際には、単なる概念に過ぎません。私が理解したところでは、プロセッサがあるプログラムに対していくつかのコマンドを実行する(これは 実行スレッド を保存し、他のプログラムの処理に少し切り替える必要があるときに 状態 をどこか(Thread Local Storage)に保存してから、他のプログラムの命令を実行し始める。といった具合に、行ったり来たりする。このように、スレッドというのは、現在実行中のプログラムの実行経路の1つという概念に過ぎない。
プロセスとは異なり、それは本当に何か、つまりリソースなどの集合体なのです。
あまり役に立たなかった定義の一例として.
から ウィキペディア :
コンピュータサイエンスにおけるスレッドは、実行スレッドの略称です。スレッドは、プログラムが自身を2つ以上の同時(または擬似的な同時)実行タスクに分割する(「分割」と呼ぶ)方法である。スレッドとプロセスはオペレーティングシステムによって異なるが、一般にスレッドはプロセス内に含まれ、同じプロセス内の異なるスレッドは同じリソースを共有するが、同じマルチタスクオペレーティングシステム内の異なるプロセスはそうではない。
では、私は正しいのでしょうか?間違ってますか?スレッドとは一体何なのか?
編集してください。 どうやらスレッドには独自のコールスタックも与えられているようなので、多少は具体的に もの .
解決方法は?
スレッドは、プロセッサのレジスタに対する独立した値のセットです(シングルコアの場合)。 これには命令ポインタ(別名プログラムカウンタ)が含まれるため、何がどの順番で実行されるかを制御します。 また、スタックポインタも含まれ、これは各スレッドに固有のメモリ領域を指すようにしなければならず、さもなければ互いに干渉することになります。
スレッドは、制御フロー(関数呼び出し、ループ、goto)の影響を受けるソフトウェア単位です。なぜなら、これらの命令は命令ポインタ上で動作し、それは特定のスレッドに属しているからです。 スレッドはしばしば何らかの優先順位付けに従ってスケジュールされます(ただし、プロセッサコアあたり1スレッドのシステムを設計することも可能で、その場合はすべてのスレッドが常に実行されているので、スケジュール設定は必要ありません)。
実際には、命令ポインタの新しい値を決定するには、その場所に格納されている命令とその値で十分です。 ほとんどの命令では、これは単に命令のサイズによってIPを進めるだけですが、制御フロー命令は他の、予測可能な方法でIPを変更します。 IPが取る一連の値は、プログラムコードを織りなす実行経路を形成し、「スレッド(thread)」と呼ばれるようになった。
関連
-
[解決済み】Not on FX application thread; currentThread = JavaFX Application Thread エラーを回避する方法は?
-
[解決済み] スレッドコンテンションとは何ですか?
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] 初心者のためのアトミック操作とは?
-
[解決済み] Javaにおける "implements Runnable "と "extends Thread "の違いについて
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] べき乗演算とは何ですか?
-
[解決済み] アプリケーションやプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?
-
[解決済み】スレッド間で共有されるリソースは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] POSIXシステムでのゾンビスレッド
-
[解決済み] "フリースレッド "と "スレッドセーフ "の違いについて
-
[解決済み] Win32 InterlockedExchange関数はどのような場合に使用するのですか?
-
[解決済み] デッドロックとは何ですか?
-
[解決済み] Javaにおける "implements Runnable "と "extends Thread "の違いについて
-
[解決済み】セマフォとモニター、何が違うの?
-
[解決済み】Node.jsに対するHaskellの対応について教えてください。
-
[解決済み】糸と繊維の違いは何ですか?
-
[解決済み】並行処理、並列処理、非同期メソッドの違いは何ですか?
-
[解決済み】Redisはシングルスレッドですが、同時I/Oはどのように行うのですか?