非同期処理、並行処理、並列処理の違いを理解する
要件
非同期処理、並行処理、並列処理の違いを理解する
タスク
非同期処理、並行処理、並列処理の違いを理解する
参考記事
▼並行処理と並列処理の理解には、この図がめちゃくちゃわかりやすいです!
▼非同期処理に関しては、これが分かりやすいです!
▼しっかりまとまっています!
▼Rustの非同期処理
▼プロセスとマルチスレッドの違がわかりやすい
▼プロセスとスレッドとタスクの違いが分かりやすく解説してあります!
学べること
非同期処理について
並行処理について
並列処理について
ヒント
まずはプロセスとスレッドがあります。
まずイメージとして、プロセスの中にスレッドがあると覚えましょう。
ここから、並列処理と、マルチスレッドに感してwebサーバーの具体例を出しながら説明します。
複数リクエストが来た際に、並列で処理したいと考えると思います。
この並列処理を実現するために、1つのプログラムの中でスレッドを複数立ち上げることがマルチスレッドです。
webサーバーのプログラムを実行した際に、裏側で1つのスレッドが立ち上げっているのです。
では、複数スレッドが立ち上がらないとしたら、どうなるでしょうか?
つまり並列で処理ができないということです。例えば10リクエスト一度に来したら、1つの処理が終わったら次の処理を実行して、それが終わったら次の処理と順番に処理していくイメージです。
イメージとしては、花火を考えてみましょう。
10個の打ち上げ花火があるとしましょう。
1個ずつ打ち上げているのが、普通の処理です。
10個の花火を一本の紐でむすんで、一箇所に火をつけたら、10箇所の花火に向かって火が進んで同時に花火を打ち上げるのがマルチスレッドが動いているイメージです。
ハマりポイント
Rsutで非同期処理を扱っていて、並行処理との違いを言葉で説明できなかったので記事にしました!
非同期処理と並行処理は、同じようで違うんです
イメージは以下のような感じ
並行処理のイメージは、勉強をするだけの学生です!
自分一人だけで英語の勉強と、プログラミングの勉強を行う。これは並行処理です。
非同期処理のイメージは、勉強も仕事も行う社会人のイメージです。
英語の勉強をして、仕事で先方にメールを送って、メールが返ってくるまで、プログラミングの勉強をして、英語の勉強をして、メールが返ってきたら、メールを送るみたいな感じです。
もしこれが、同期処理の場合なら、英語の勉強をして、仕事で先方にメールを送って、メールが返っ待って、メールが返ってきたらメールを先方に返して、プログラミングの勉強をして、英語の勉強をするイメージです。
非同期処理のポイントは、自分以外のところにタスクを投げて、返ってきたらタスクを行う事ができるものです。
全然関係ないですが、マルチタスクが苦手という人はこの非同期処理の場合が苦手なんです。