05.02.2010
Ключ /Wp64 и ошибка с обработкой шаблонов
Занимаясь продвижением анализатора Viva64 (из состава PVS-Studio) мы часто комментируем ключ /Wp64 из Microsoft Visual C++.»
03.02.2010
Параллельные заметки №1 – технология OpenMP
В ближайшие несколько постов мы расскажем о практическом использовании многоядерных процессоров.»
29.01.2010
64-битные технологии - еще одно направление в современном программном обеспечении
В блогах и форумах довольно много говорится о многоядерных процессорах, как очевидном этапе развития компьютерных систем.»
2.02.2010 На нашем сайте стали доступны "Уроки разработки 64-битных приложений на языке Си/Си++".»
1.02.2010 Выпущена новая версия PVS-Studio 3.45!»
21.01.2010 Выпущена новая версия PVS-Studio 3.44!»
10.12.2009
Вопросы и ответы по PVS-Studio (PVS-Studio FAQ)
В документе собраны некоторые вопросы и ответы по анализатору кода PVS-Studio компании ООО "СиПроВер".»
09.12.2009
Вопросы и ответы по библиотеке VivaCore (VivaCore FAQ)
В документе собраны некоторые вопросы и ответы по библиотеке анализа Си/Си++ кода VivaCore компании ООО "СиПроВер".»
23.11.2009
PVS-Studio: использование функции "Mark as False Alarm"
В статье приведены описание и пример использования новой функции PVS-Studio 3.40 "Mark as False Alarm" ("Пометить как ложное срабатывание").»
Состояние гонки. Race condition. Другое название: гонки данных (data race). Ошибка программирования многозадачной системы, при которой работа системы зависит от того, в каком порядке выполняются части кода. Состояние гонки является классическим гейзенбагом. Состояние гонки возникает тогда, когда несколько потоков многопоточного приложения пытаются одновременно получить доступ к данным, причем хотя бы один поток выполняет запись. Состояния гонки могут давать непредсказуемые результаты, и зачастую их сложно выявить. Иногда последствия состояния гонки проявляются только через большой промежуток времени и в совсем другой части приложения. Кроме того, ошибки такого рода невероятно сложно воспроизвести повторно. Для предотвращения состояния гонки используются приемы синхронизации, позволяющие правильно упорядочить операции, выполняемые разными потоками. Приведем пример. Пусть, один поток выполняет над общей переменной x операцию x = x + 3, а второй поток - операцию x = x + 5. Данные операции для каждого потока фактически разбиваются на три отдельных подоперации: считать x из памяти, увеличить x, записать x в память. В зависимости от взаимного порядка выполнения потоками подопераций финальное значение переменной x может быть больше исходного на 3, 5 или 8.
Если вы разрабатываете параллельное приложение на базе OpenMP, то мы рекомендуем обратить ваше внимание на статический анализатор VivaMP, который может обнаружить ряд ошибок связанных с состояниями гонки еще на этапе написания кода, что может существенно сократить этап отладки параллельных алгоритмов.