__sync_xxx_compare_and_swap
GCCアトミック ビルトインでロックフリー キューを実装しました。ここで、コードが正しいことを確認したいと思います。そこで、エンキューとデキューのために複数のスレッドを開始し、次のことを試みました。
- エンキューおよびデキュー操作の数を測定し、それらが一致するかどうかを確認します
- 個々の要素がキューに入れられ、キューから取り出された回数を測定し、各要素の数が 2 (キューに入れられた回数とキューから取り出された回数) かどうかを確認します。
上記の 2 つの結果は正しいことがわかりましたが、エンキュー順序がデキュー順序とまったく同じであることを確認するにはどうすればよいですか? または、実装の正確性を確認する方法はありますか?