C # как провести модульное тестирование / убедиться, что API, предоставляемые классом, являются потокобезопасными? - PullRequest
2 голосов
/ 28 июля 2011

Нужно ли поместить его в многопоточный контекст? Или до тех пор, пока члены класса не выставляются как общие ресурсы и являются неизменяемыми и доступны только для чтения, это должно быть доказано.

1 Ответ

3 голосов
/ 28 июля 2011

Большинство методов экземпляра в вашем API не должны быть потокобезопасными вообще.Код клиента должен решить - в зависимости от контекста - синхронизировать доступ или нет, и при какой степени детализации.Только статические (классовые) методы могли бы обеспечить безопасность потоков, и это не должно быть обязательным.

Чтобы ответить на ваш вопрос, я не думаю, что существует тривиальный, не зависящий от контекста способ тестирования проблем потоков.Проблемы с многопоточностью, такие как гонки данных или взаимоблокировки, в большинстве случаев очень трудно найти: низкая вероятность, очень зависит от входных данных, недетерминированные и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...