
同期プリミティブ
sync.Mutex、RWMutex、Once、Pool、Map、Cond、アトミック操作
22 面接問題·
Mid-Level
1Go の sync.Mutex とは何ですか?
1
Go の sync.Mutex とは何ですか?
回答
sync.Mutex(相互排他ロック)は、一度に1つのゴルーチンだけがクリティカルセクションにアクセスできることを保証する同期プリミティブです。Lock を呼び出すと mutex が利用可能になるまでブロックし、Unlock で他のゴルーチンのために解放します。共有データへの並行アクセスを保護するために使用します。
2sync.Mutex で Lock の後に Unlock を呼び忘れるとどうなりますか?
2
sync.Mutex で Lock の後に Unlock を呼び忘れるとどうなりますか?
回答
Unlock を忘れると、他のゴルーチンが mutex を取得しようと無限に待機するため、デッドロックの可能性が生じます。ベストプラクティスは defer を使い、panic が発生しても Unlock が呼ばれるようにすることです。ロックのリークを避けるため、Lock と Unlock は常に同じスコープで対にします。
3sync.Mutex と sync.RWMutex の主な違いは何ですか?
3
sync.Mutex と sync.RWMutex の主な違いは何ですか?
回答
sync.RWMutex は RLock で複数の並行読み取りを許可しますが、Lock による書き込みは1つだけ排他的に行われます。読み取り同士はブロックし合わないため、読み取りが多いシナリオでパフォーマンスが向上します。読み取りが頻繁で書き込みが稀な場合に RWMutex を使用します。
4
sync.Mutex の Unlock に defer を使うのはなぜですか?
5
sync.Mutex より sync.RWMutex を優先すべきなのはいつですか?
+19 面接問題
その他のGo面接トピック
Goの基礎
Junior
25問Goのデータ構造
Junior
20問Go のインターフェース
Junior
18問エラー処理
Junior
20問Goroutine の基礎
Junior
20問Channels
Junior
22問Go Modules
Mid-Level
18問HTTP サーバー
Mid-Level
24問HTTPクライアント
Mid-Level
18問JSON エンコーディング
Mid-Level
20問Database/SQL
Mid-Level
22問context パッケージ
Mid-Level
20問Testing
Mid-Level
22問並行処理パターン
Mid-Level
24問Go Web フレームワーク
Mid-Level
20問REST API 設計
Mid-Level
20問gRPC
Mid-Level
22問Reflection
Senior
20問メモリ管理
Senior
24問パフォーマンス最適化
Senior
22問Generics
Senior
20問Go Design Patterns
Senior
24問Microservices
Senior
24問セキュリティと認証
Senior
24問Docker & Containerization
Senior
20問Kubernetes Basics
Senior
22問高度な Go
Senior
20問CLI開発
Senior
20問