Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > локализация глобальных переменных


Автор: igsilya 23.5.2011, 19:16
Я в принципе не новичок, но сталкиваюсь с подобным впервые.
Есть большой модуль в котором есть много глобальных переменных, чтоб от них избавится потребуется очень много времени и сил.
Нужно использовать функцию из этого модуля в другой программе. Эта программа многопоточная (использую pthread)  => глобальные переменные того модуля будут использоваться всеми потоками сразу(что нас не устраивает).
Требуется, не отказываясь от потоков в пользу процессов, локализовать глобальные переменные того модуля для каждого потока.(каждому потоку по своему экземпляру).
Надеюсь получилось описать проблему.
Может кто сталкивался с подобным? 
Заранее спасибо.

Автор: borisbn 23.5.2011, 19:36
Сталкивался. Кроме создания класса и изменения глобальных переменных на члены этого класса ничего лучше не придумал

Автор: igsilya 23.5.2011, 19:41
Просто этот так называемый модуль состоит сам из 14 файлов, включат много классов и пространств имен.
Я не очень представляю как это запихнуть в один класс.

Автор: borisbn 23.5.2011, 21:18
Всего то 14… а в один и не надо. Сделай 14 классов. Никто и не говорил, что будет легко. С недельку придётся убить. Мож меньше…

Автор: igsilya 23.5.2011, 21:22
надо до завтра. так что не вариант. мне проще будет тогда потоки процессами заменить.

Автор: xvr 24.5.2011, 19:00
Сделать все переменные TLS (локальными для thread'а). В разых компиляторах это делается разными ключевыми словами.

Автор: igsilya 24.5.2011, 19:37
а можно пример для GNU G++ 4.4?

все, сам нашел в нете. Всем спасибо за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)