13

Как вы можете практически проверить синхронизированную структуру данных (в C)?Тестирование параллельных структур данных

Срабатывание нескольких потоков и их конкуренция за доступ к структуре на некоторое время, чтобы увидеть, что-то пошло не так, не звучит очень безопасно.

EDIT в ответ на комментарии: я имею в виду, что существует несколько потоков, работающих на одном и том же наборе данных, с какой-то стратегией синхронизации (флаги/семафоры/блокировки CAS/и т. Д.), Чтобы, по-видимому, устранить расу условий и тупиков. Проблема заключается в программном тестировании правильной синхронизации рабочих.

+3

Вы не можете синхронизировать данные, только код. –

+0

http://stackoverflow.com/questions/1226779/how-to-run-concurrency-unit-test –

+1

@HansPassant: Предположительно, структура данных имеет методы, которые призваны быть потокобезопасными. –

ответ

4

No-one действительно знает, как это сделать со 100% -ной надежностью. Here - всего лишь один пример инструмента тестирования для поиска ошибок параллелизма.

+0

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

+1

Здесь находится http://research.microsoft.com/en-us/projects/chess/ – markgz

+0

Любые шансы этого или подобного инструмента для других сред, например. Python? –

Смежные вопросы