Добрый день.
Предлагаю для чтения и обсуждения новую статью в духе "20 ловушек переноса Си++ — кода на 64-битную платформу". На этот раз мы обратили взор в сторону технологии OpenMP. Предлагаю вашему вниманию:
Алексей Колосов, Евгений Рыжков, Андрей Карпов. 32 подводных камня OpenMP при программировании на Си++.
http://www.viva64.com/articles/32_OpenMP_traps_%28rus%29.html
Будем благодарны критике, замечаниям, отзывам, информации о других схожих ошибках.
Пишите в форум или karpov#del#@viva64.com.
С уважением, Андрей Карпов.
Здравствуйте, Analytic2007, Вы писали:
A>Будем благодарны критике, замечаниям, отзывам, информации о других схожих ошибках.
Однажды я наступил на грабли "выброс исключения из параллельного цикла":
#pragma omp parallel for
for(int i=0; i<10; ++i)
{
if((i%3)==0)
trow std::exception("Шеф, усё пропало!");
}
Причем вызов функции бросающей исключение может быть достаточно хорошо замаскирован, а писать catch в каждом цикле ну очень лениво
.
А самое неприятное, что иногда все работает нормально (исключение бросается дальше), а иногда unhadled exception.