2

ノンブロッキング キューの疑似コードを C# に移植しました。以下のコードは、論文のほぼそのままのコピーとして意図されています。

実装をテストするには、どのようなアプローチをとりますか?

注: 私は VS2010 で実行しているため、CHESS はまだサポートされていません。

編集:

問題のコードを削除したので、疑うことを知らない開発者はそれを使用しません。バグをなくすにはかなりの数の変更が必要でした...それでも、バグがないと 100% 確信していませんでした。ブルートフォーステストでは、ロックベースのソリューションよりも優れたパフォーマンスを得ることができませんでした.

また、3.5 をターゲットにしているので、4.0 の同時キューで SOL だと思っていました。3.5 RX フレームワークには ConcurrentQueue が含まれているため、これは単なる楽しいプログラミング作業であり、それ以上のものではありません。

4

2 に答える 2

2

VS 2010 と .NET 4 を使用している場合は、ConcurrentQueue<T>.

于 2010-04-19T19:03:30.183 に答える
2

ノンブロッキング キューを作成しようとしたときに、この方法でキューをテストしました。私は10個のスレッドを作成し、同時にエンキューを1000回呼び出しました。最後に、キューのサイズを確認しましたが、!= 10 000 でした。または、例外がスローされることもありました。次に、同時両端キューを試しました。同じ結果です。これは明らかに、キューがスレッド セーフではないことを意味します。

于 2010-04-19T19:04:08.750 に答える