| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Глобальные переменные и OpenMP |
| Автор: AndrewMT 31.5.2012, 10:38 |
| Уважаемые коллеги! Помогите со следующим вопросом.... Долго и упорно переписывал большой проект с Delphi на С++ (использую QT с компилятором от MS VC++ ), переписал, отладил... Пришло время распараллеливания... Решил использовать OpenMP, чтобы сильно не "курочить" программу - в ней десятки программных модулей, сотни глобальных переменных - писали разные люди (математики), собирали код лет 15... И вот столкнулся со следующим - при распараллеливании самого "напряжённого" участка потребовалось некоторые глобальные переменные сделать как threadprivate, они через кучу ссылок (через разные модули), в h-нике объявлены как extern. Так вот - в доках нарыл, что директиву threadprivate необходимо применять в каждом юните, где используются оные глобальные перменные, и получается, что компилятор ругается, если эта директива применяется в тех юнитах, в которых подключен h-ник, в котором объявлены (extern-ном) эти глобальные переменные. Как быть?... Может, кто-нибудь сталкивался с такой проблемой?... |
| Автор: boostcoder 31.5.2012, 10:42 |
глобальные переменные - зло! избавляйся от них. |
| Автор: AndrewMT 31.5.2012, 10:47 |
| Да я сразу говорил предыдущим авторам данного творения, что глобальные переменные - зло. Но уже деваться некуда, такое понаворотили.... Добавлено через 9 минут и 29 секунд Добавлю, что нечто подобное наблюдалось в GCC, но этот баг был исправлен ещё в 2005 году. А вот как с компилятором MSVC++ - не знаю.... |