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

DMM.go #11 - sync.Condの使い所について考えてみる

Avatar for na2na na2na
September 17, 2025

DMM.go #11 - sync.Condの使い所について考えてみる

DMM.go #11にて使用したスライドです
https://dmm.connpass.com/event/363839/

Avatar for na2na

na2na

September 17, 2025
Tweet

More Decks by na2na

Other Decks in Technology

Transcript

  1. わかること 28 sync.Cond (条件変数) chan (チャネル) 関心事 共有されている「状態」が変化したこと。 「データ」そのものを、あるゴルーチンから別のゴ ルーチンへ送ること。

    役割 状態の変化を待っているゴルーチン全員に 「状態が変わったかもしれないから、確認してくだ さい」と知らせる。 データを特定のゴルーチンに 直接、安全に届ける。 その後 起こされたゴルーチンたちは、ロックを 再取得できたものから一つずつ処理をする データを受け取ったゴルーチンは、 そのデータに対する所有権を得て、 他のゴルーチンと競合することなく 処理を開始できる
  2. おさらい 45 sync.Cond (条件変数) chan (チャネル) 関心事 共有されている「状態」が変化したこと。 「データ」そのものを、あるゴルーチンから別のゴ ルーチンへ送ること。

    役割 状態の変化を待っているゴルーチン全員に 「状態が変わったかもしれないから、確認してくだ さい」と知らせる。 データを特定のゴルーチンに 直接、安全に届ける。 その後 起こされたゴルーチンたちは、ロックを 再取得できたものから一つずつ処理をする データを受け取ったゴルーチンは、 そのデータに対する所有権を得て、 他のゴルーチンと競合することなく 処理を開始できる
  3. 参考文献 • k8s.io/client-go • Go1.25.1のソースコード • Goでの並行処理を徹底解剖! - Zenn •

    Goの並行処理入門 - Goroutine基礎編 • Goの並行処理入門 - syncパッケージ編 55