![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 31.05.2012
Сообщений: 6
|
![]()
Уважаемые коллеги! Помогите со следующим вопросом....
Долго и упорно переписывал большой проект с Delphi на С++ (использую QT, пока с компилятором MSVC++ под 64 бита), переписал, отладил... Пришло время распараллеливания... Решил использовать OpenMP, чтобы сильно не "курочить" программу - в ней десятки программных модулей, сотни глобальных переменных - писали разные люди (математики), собирали код лет 15... И вот столкнулся со следующим - при распараллеливании самого "напряжённого" участка потребовалось некоторые глобальные переменные сделать как threadprivate, они через кучу ссылок (через разные модули), в h-нике объявлены как extern. Не заработало - начались гонки данных. Так вот - в доках нарыл, что директиву threadprivate необходимо применять в каждом юните, где используются оные глобальные перменные, и получается, что компилятор ругается, если эта директива применяется в тех юнитах, в которых подключен h-ник, в котором объявлены (extern-ном) эти глобальные переменные. Как быть?... Может, кто сталкивался с таким?... Сразу скажу, что GCC подобный баг был исправлен в 2005 г., а вот MSVC.... ((( |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Qt, глобальные переменные и OpenMP | AndrewMT | Qt и кроссплатформенное программирование С/С++ | 0 | 31.05.2012 14:45 |
Глобальные переменные | kilogram | PHP | 2 | 30.03.2012 09:19 |
глобальные переменные | Dimarik | PHP | 2 | 11.07.2010 19:22 |
Глобальные переменные | Lokos | Общие вопросы Delphi | 3 | 05.05.2010 11:15 |