トーク

公式singleflightを約2倍高速化したGenerics対応実装と最適化
Room 1 14:00 - 14:20
Goのgolang.org/x/sync/singleflightは、同一キーに対する重複処理をまとめる実績ある仕組みです。一方で、型はinterface{}前提、panic/Goexit伝搬や共有フラグ、同期的なクリーンアップなど安全性のための処理があり、オーバーヘッドが気になる場面もあります。
本セッションでは、まず公式実装の構造(callのロック粒度、panic回復、共有フラグ、削除フロー)を短く整理し、次にGenericsで型安全性を確保しつつ、deleteを非同期化して返却を先行させる実装(非同期クリーンアップ+ロック最適化)を紹介します。
参加者はsingleflightの内部理解に加えて、Goにおけるロックの置き方・クリティカルセクション短縮・待ち時間最小化の具体的テクニックを持ち帰れます。