怪我咯2017-04-18 10:54:40
プラットフォームによっては、比較および交換操作にロックが必要ない場合がありますが、ほとんどのプラットフォームはロックフリーの CAS をサポートしています。最も単純なロックは、テストとセットによって実装されるスピン ロックです。もちろん、cas によって実装することもできます。
スピンロックはロックが失敗しても試行を続け、CPU リソースを使い果たします。
など リーリーシステム インターフェイスによって提供されるロックは、通常、ロックが失敗すると、
と同様にスレッドを一時停止します。 リーリーここでのwait_for_unlock_signal()
は虚数関数です。しかし、ロックは依然として cas のようなアトミック操作に依存しています。言い換えれば、ロックは、テストと設定、比較と交換などのいくつかの基本的なアトミック操作を通じて実装されるようになりました。