Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2008, 11:42   #1
PM85
 
Регистрация: 15.04.2008
Сообщений: 3
Вопрос Глобальны переменные для потоков

Здравствуйте. Передо мной стоит задача - организовать многопоточное приложение, в котором есть необходимость хранить ряд соединений с БД. На сколько я понимаю - каждый поток имеет свою область памяти, и другому потоку доступ в неё закрыт?

Значит выходит, что необходимо иметь некоторый участок shared memory, в котором собственно эти соединения и хранить. Используя API среды, для которой я пишу приложение я смог это сделать, и да, действительно, сохраняемые данные доступны изо всех потоков. Но проблема в том, что данные то очень не статичные. API предлагает набор фунций с работой с БД, но выделением памяти для хранения соединения она занимается сама, а значит соединение создастся в области памяти того потока, который его создаёт. В участок разделяемой памяти я могу записать указатель на это соединение, но оно всё-равно останется недоступным.

Подскажите, кто имеет опыт работы с потоками и разделяемыми данными, как можно поступить в такой ситуации?

Платформа: UNIX (Linux)
PM85 вне форума Ответить с цитированием
Старый 15.04.2008, 12:47   #2
Vedrus
ИСККОНный хакер
Форумчанин
 
Аватар для Vedrus
 
Регистрация: 08.11.2007
Сообщений: 195
По умолчанию

Объекты CRITICAL_SECTION или Мьютексы смотрели?
#define QUESTION bb || !bb
Vedrus вне форума Ответить с цитированием
Старый 15.04.2008, 17:24   #3
PM85
 
Регистрация: 15.04.2008
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Vedrus Посмотреть сообщение
Объекты CRITICAL_SECTION или Мьютексы смотрели?
CRITICAL_SECTION как я понял это число winAPI'шное определение мьютекса. У меня unix. И на сколько я знаю мьютексы используются для блокировки доступа к ресурсам. У меня же проблема именно в динамическом разделении ресурса.
PM85 вне форума Ответить с цитированием
Старый 15.04.2008, 18:12   #4
PM85
 
Регистрация: 15.04.2008
Сообщений: 3
По умолчанию

Виноват, приложение не многоПОТОЧНОЕ, а многоПРОЦЕССНОЕ. Память у потоков общая, а у процессов у каждого своя. Вот в чём проблема.
PM85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование потоков Repz Общие вопросы Delphi 6 25.01.2008 14:20
Несколько потоков Adm Общие вопросы Delphi 13 18.01.2008 20:04
Перенаправление потоков Carbon Win Api 5 25.11.2007 14:46
Дескрипторы потоков - Для каждого элемента списка необходимо создать поток, выполняющий требуемые функции kdv0403 Общие вопросы Delphi 2 09.06.2007 11:12