CountDownLatch в C ++ с использованием Boost Mutexes и Condition - PullRequest
1 голос
/ 29 апреля 2011

Я пытался реализовать CountDownLatch, используя бьют-мьютексы и переменную условия.Ниже приведен код, и я хотел бы знать, нужно ли мне что-нибудь добавить.

Как я могу также протестировать этот код?

1 Ответ

1 голос
/ 29 апреля 2011

Для модульного тестирования вы можете попробовать стресс-тестирование. Например, для CountDownLatch создайте 25 тестовых потоков, которые одновременно вызывают CountDownLatch::countDown(), 25 других потоков, которые одновременно вызывают CountDownLatch::getCount(), и 25 других потоков, которые вызывают CountDownLatch::wait(). Чтобы сделать вещи более одновременными, используйте барьер или заставьте потоки спать до того же абсолютного времени. Убедитесь, что все потоки завершаются правильно (без взаимоблокировок), присоединяясь ко всем из них. Убедитесь, что CountDownLatch::m_cdlCount заканчивается на ноль.

Запускать один и тот же тест много раз (в течение разумного периода времени).

Вы можете использовать ту же базовую идею для AtomicCounter.

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

...