Upgrade to Pro — share decks privately, control downloads, hide ads and more …

軽量なスレッドとは?

ryo takaya
October 12, 2023
63

 軽量なスレッドとは?

ryo takaya

October 12, 2023
Tweet

Transcript

  1. A goroutine is a lightweight thread managed by the Go

    runtime.                                出典:https://go.dev/tour/concurrency/1
  2. そもそもスレッドとgoroutineとは - スレッド(thread) - コンピュータプログラムにおいて特定の処理を行うための一貫性のある命令の流れのことであり、プロセッサ利用の最小単位 (引 用:https://en.wikipedia.org/wiki/Thread_(computing)) - goroutine -

    goroutineはGoのプログラムでの最も基本的な構成単位。 - Goのプログラムでは最低でも必ず一つの goroutineが動作している - OSのスレッドでは無いけど必ずしもグリーンスレッド (ユーザー空間で動くスレッド )でも無い。コルーチンの一 種。(出典: go言語による並行処理 ) - サブルーチンがエントリーからリターンまでを一つの処理単位とするのに対し、コルーチンはいったん処理を中断し た後、続きから処理を再開できる。 (引用 : https://en.wikipedia.org/wiki/Coroutine)
  3. コンテキストスイッチのオーバーヘッドが抑えられる Goのアプローチ - スレッドのモデルには3種類のモデルがある - 1:1 - N:1 - M:N

    - Goが採用しているのはM:Nモデル - メリット : スレッドの切り替えによるコンテキストスイッチが抑えられる - デメリット : スケジューリングが複雑になる - Goランタイムのgoroutineのスケジューリングについては以下が詳しいのでご興味があれ ば! - https://rakyll.org/scheduler/