ロックフリーの通常のデータ型の実装 (ソースコードを意味する) のための優れたリソースを知っている人はいますか? リスト、キューなどについて考えていますか?
ロックの実装は非常に簡単に見つけることができますが、ロックフリーアルゴリズムの例や、CAS が正確に機能する方法、およびそれらの構造を実装するためにそれを使用する方法を見つけることができません。
ロックフリーの通常のデータ型の実装 (ソースコードを意味する) のための優れたリソースを知っている人はいますか? リスト、キューなどについて考えていますか?
ロックの実装は非常に簡単に見つけることができますが、ロックフリーアルゴリズムの例や、CAS が正確に機能する方法、およびそれらの構造を実装するためにそれを使用する方法を見つけることができません。
Julian M Bucknall のブログをチェックしてください。彼は、キュー、リスト、スタックなどのロックフリーの実装について (詳細に) 説明しています。
Cで書かれています。
C++ で問題ない場合は、boost::lockfreeをご覧ください。ロックフリーの Queue、Stack、および Ringbuffer の実装があります。
このboost::lockfree::details
セクションでは、ロックフリーのフリーリストとタグ付きポインター (ABA 防止) の実装を見つけることができます。また、 boost::atomic (C++0x の開発中バージョン)による明示的なメモリ順序付けの例も示しますstd::atomic
。
boost::lockfree
とはまだboost::atomic
参加しboost
ていませんが、boost-development メーリング リストで注目されており、レビューが予定されています。