2011-06-20 48 views
2

我目前使用googles的gtest來編寫我的單元測試,但它看起來並不像它可以測試線程安全(即從多個線程訪問某些東西並確保其按照規範行事)。線程安全測試

你用什麼來測試線程安全性?我希望跨平臺的東西,但是,它絕對必須在Windows上工作。

謝謝!

+5

我不是MT專家,但我不認爲你可以自動MT設計測試,整個事情是非確定性的。 –

+0

但應該可以檢查某些「合同」。 –

+2

[多線程軟件測試方法]的可能重複(http://stackoverflow.com/questions/2437763/testing-approach-for-multi-threaded-software) –

回答

1

如果多線程代碼不是立即顯然證明是正確的,那麼它幾乎肯定是錯誤的。如果是這樣,你不需要測試它。

嚴重:共享可變狀態應該是非常本地化和罕見的,並且做它的類應該是明顯正確的。

您的線程通常應該通過安全基元進行交互(例如,線程安全的工作隊列)。如果你的代碼中有很多數據結構分散在你自己的鎖定策略中,那麼你的代碼幾乎肯定會包含死鎖和競爭條件。大量的測試工作只會發現一些問題。