Какие бесплатные инструменты или стратегии могут помочь отладить многопоточную ошибку повреждения? - PullRequest
0 голосов
/ 30 апреля 2010

У меня клиент-серверное приложение с многопоточностью. На стороне сервера происходит сбой с повреждением std :: list, что приводит к SEGV. Я подозреваю, что существует какая-то проблема синхронизации между потоками, когда два потока одновременно обновляют std :: list и вызывают его повреждение.

Пожалуйста, предложите бесплатные инструменты для отслеживания этого или стратегии, которые могут быть полезны.

1 Ответ

0 голосов
/ 30 апреля 2010

Если вам известна общая структура данных, которая повреждена из-за одновременного доступа, то включите Mutex в структуру данных, чтобы только один поток мог получить доступ одновременно, затем повторите попытку.

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

Можете ли вы указать, какую ОС вы используете и какой компилятор?

...