0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プロセスとスレッド諸々

Posted at

プロセスとスレッドって何?

まずタスクってよく言う。マルチタスクとか(音楽聞きながら勉強する)

それと同じで、ググりながらパワポ作ったりすると2つのタスクが同時進行している。

1個のタスクが1個のプロセスを生み出す。タスク=プロセスとして考える。

1タスク(1プロセス)の中に処理しないといけないことを細かく分解していったものがスレッド。

例えば現実で漢字勉強というタスクがあれば、それを処理に分けると

漢字勉強(タスク,プロセス)

  • ひらがなを理解する(スレッド1)
  • 漢字の意味を理解する(スレッド2)
  • 漢字の書き方を理解する(スレッド3)

みたいな感じ。

それがOSからみたら色々なアプリに対してもあるってこと。

プロセスがメモリを確保しスレッド達がCPUにあれして、これしてと言う。

CPUのスペックをみると8コア16スレッドみたいに書かれているのもこれのこと。

1コアのなかでマルチスレッドの処理ができるのが現在当たり前。

並行処理と並列処理

並列、並行、ほぼ同じことを言ってるようで全然違う。日本語ってむずい。

簡単に言うと、並列がマジの同時処理。並行が偽りの同時処理。
Untitled.png

スレッドがCPUコアに処理を頼む。その際、CPUのコア数に応じて並列で処理できる数が異なる。

コア数が多いCPUが高性能のため値段が高い。

マルチコアの処理は、マジの同時処理。

コア1~4で処理(スレッド)が同時に並列に処理されている。
スレッドにも処理するのにかかる時間はバラバラ。すぐ終わるものからめっちゃ時間食うものまで。

じゃあ、コア2に最初に入った処理がめちゃくちゃ時間かかるやつだったら、それまでコア2はその処理でずっと使われるのか?

それとも適度にスレッドを切り替えながら満遍なく処理を行うのか?

普段PCではスレッドを切り替えながら満遍なく処理を行っている。

これを並行処理。実際は同時に処理はされていないのだけど、処理スピードが異常なので普段PCを触っていて同時に処理されているように感じる。だけど実際は1コアの中で複数のスレッドを切り替え処理を行っている。
Untitleds.png

同期処理と非同期処理

同期処理はプログラムを上から順番に実行していく。

対して非同期処理は上から順番に実行されるとは限らない。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?