Go

同期プリミティブ

sync.Mutex、RWMutex、Once、Pool、Map、Cond、アトミック操作

22 面接問題·
Mid-Level
1

Go の sync.Mutex とは何ですか?

回答

sync.Mutex(相互排他ロック)は、一度に1つのゴルーチンだけがクリティカルセクションにアクセスできることを保証する同期プリミティブです。Lock を呼び出すと mutex が利用可能になるまでブロックし、Unlock で他のゴルーチンのために解放します。共有データへの並行アクセスを保護するために使用します。

2

sync.Mutex で Lock の後に Unlock を呼び忘れるとどうなりますか?

回答

Unlock を忘れると、他のゴルーチンが mutex を取得しようと無限に待機するため、デッドロックの可能性が生じます。ベストプラクティスは defer を使い、panic が発生しても Unlock が呼ばれるようにすることです。ロックのリークを避けるため、Lock と Unlock は常に同じスコープで対にします。

3

sync.Mutex と sync.RWMutex の主な違いは何ですか?

回答

sync.RWMutex は RLock で複数の並行読み取りを許可しますが、Lock による書き込みは1つだけ排他的に行われます。読み取り同士はブロックし合わないため、読み取りが多いシナリオでパフォーマンスが向上します。読み取りが頻繁で書き込みが稀な場合に RWMutex を使用します。

4

sync.Mutex の Unlock に defer を使うのはなぜですか?

5

sync.Mutex より sync.RWMutex を優先すべきなのはいつですか?

+19 面接問題

次の面接に向けてGoをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める