ここからMichael-ScottFIFOキューを実装しようとしています。ABA問題の解決策を実装できません。このエラーが発生します。
error: incompatible type for argument 1 of '__sync_val_compare_and_swap'
参考までに、私はLinuxボックスを使用してこれをIntelアーキテクチャでコンパイルしています。私のセットアップについてさらに情報が必要な場合は、お問い合わせください。
sync_val_CAS
最大32ビット値しか処理できないようです。したがって、ABA問題を排除するために使用されるカウンターを削除すると、すべてが正常にコンパイルおよび実行されます。
ここで使用する必要がある関連する64ビットCAS命令を知っている人はいますか?
追加の質問として、ロックフリーのFIFOキューのより良い(より速い)実装はありますか?私はこれにNirShavitetalが出くわしました。これは興味深いようです。他の人が同様の努力を見たのだろうか?ありがとう。