2

C# で同時循環バッファーを実装しましたが、その動作をテストしたいと思います。私は非常に単純な API を持っていvoid Write(T element)ますT Read()。考えられるすべてのユースケースをテストし、競合状態を含む考えられるすべてのバグを検出する方法の良い例を探しています.2つのスレッドからの単純な交互の書き込みと読み取りは、順序を制御できないため、良い考えではないようです.異なるスレッドからの API 呼び出しの数。

4

1 に答える 1

3

ユースケースの1つには、バッファーがいっぱいになるまで(バッファーから読み取らずに)バッファーに書き込むことを含める必要があります。

テストケースが同じスレッドからの読み取りと書き込みを実装している場合は、読み取り/書き込みのシーケンスを制御できます。

マルチスレッドコードでのスレッドセーフの実装が、「検査によって」、つまりコードレビュー(テストだけでなく)によって検証できるほど単純な場合に、私はそれが好きです。

于 2012-11-17T16:53:08.033 に答える