Используя свое приложение, я наткнулся на состояние гонки в некотором коде, который использует NSOperationQueue
для асинхронного выполнения задач после событий, инициируемых пользователем. Я знаю, как исправить состояние гонки, так как это глупая ошибка дизайна, в которую я не буду углубляться, но я хотел бы доказать ошибку с помощью тестового примера (чтобы он не вернулся во время дальнейшей оптимизации / рефакторинга. по линии). Это меня поставило в тупик. Как можно тестировать что-то многопоточное, особенно когда цель теста - создать состояние гонки?
Есть ли у кого-нибудь ссылки на справочные материалы, на которые я могу ссылаться, когда дело касается потоков и модульного тестирования? Меня особенно интересует создание условий гонки.