2012-11-17 28 views
2

我在C#上實現了併發循環緩衝區,現在想測試它的工作。我有非常簡單的API - void Write(T element)T Read()。我正在尋找一個很好的例子來說明如何測試所有可能的用例並檢測所有可能的錯誤,包括競爭條件。從2個線程中進行簡單的替代寫入和讀取似乎不是一個好主意,因爲我們無法控制順序來自不同線程的API調用。在C#上測試併發循環緩衝區的好例子

回答

3

其中一個用例應該包括寫入緩衝區(不讀取它)直到緩衝區已滿。

如果您的測試用例實現了從同一個線程讀寫,那麼您可以控制讀/寫的順序。

我喜歡它,當多線程代碼中的線程安全性的實現足夠簡單,足以驗證「通過檢查」,即通過代碼審查(而不僅僅是通過測試)。

+0

您的回答給了我一個想法,通過從同一個線程以預定義的順序啓動不同的原子指令來模擬併發運行(就像它們從不同線程同時運行一樣)。認爲這對我來說是一個很好的解決方案。 –