回答編集履歴
1
微修正
answer
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
ロックを取得する方法とロック取得のリトライ操作は分けて考えた方が良いです。
|
21
21
|
ロックを取得できなかった場合、ロック取得をリトライする場合が多いですが、その時、直ぐにリトライするのがスピン・ロックですね。CPUを無駄に消費するのであまり使われないと思います。
|
22
|
-
一定時間
|
22
|
+
一定時間スリープしてリトライすることも考えられます。ポーリングと呼ばれます。応答時間とCPU消費のトレード・オフになりますが、デッドロックを避けやすいです。(待ちの間に処理を挟めますので。)
|
23
23
|
そして、他のイベントの発生によりリトライする方法が最も良く使われます。例えば、[ミューテックス](https://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%A5%E3%83%BC%E3%83%86%E3%83%83%E3%82%AF%E3%82%B9)の場合はミューテックス解放イベントによりロック取得をリトライします。CPUを無駄に消費しないので効率的です。しかし、待っている間何もできないため、デッドロックを避けるのが結構たいへんです。
|
24
24
|
|
25
25
|
---
|