(C++ ではなく) C で記述されたロックフリー アルゴリズム (キュー、リンク リストなど) を実装するライブラリはありますか? Intel のようないくつかのライブラリを調べましたが、少なくとも Intel のライブラリよりも汎用的な汎用ライブラリを使用したいと考えています。
4 に答える
ケンブリッジ大学の実用的なロックフリー データ構造を参照してください。
liblfds
完全な API ドキュメントを含む Wiki、質問のためのフォーラム、著者のガラガラを読むためのブログ :-)
プラットフォームに依存しません。Windows、Linux、Intel、ARM ですぐに使用できます。
リリース 7 は 1 ~ 2 か月でリリースされる予定です。ランタイム キャッシュ ラインのアライメント、バックオフ、および SMR を追加します。(SMR は、他の多くの CPU タイプも提供します。基本的に、GCC がコンパイルするアトミック ops をサポートするすべてのもの、たとえば SPARC、MIPS、IA64 など)。
また、ライセンスはありません。コードは好きなように使用できます。お金を稼ぐ!GPL ではありません。
私は現在、ロックフリーのライブラリを書いていますが、それは C++ です。これは STL 風のLock-Free Doublely-Linked Listです。
使用するメモリ マネージャーは非常に強力 (ABA の問題のない 32 ビット CAS) であるため、これを使用して完全なコンテナー セットを作成しています: ロックフリー マップ/セット (スキップ リストを使用)、ロックフリー バッグ (キュー/スタックの代わりに)、およびロックのない順序付けられていないマップ (分割順序付きリストを使用するハッシュ テーブル)。
二重リンク リストの詳細については、関連する質問に対する私の回答をご覧ください。