Dll и потоки
От: _Shyrik_ Украина  
Дата: 08.12.10 12:23
Оценка:
Здавия желаю, форумчане.
Есть у меня проэкт, который разросся ну просто до не приличных размеров. Сильно упрощённая схема такова: Gui модуль — exe, сервис и кучка dll.
Dll имеет функционал, который может использоваться как в Gui, так и в сервисе. Причём, в Gui эта dll работает в 1 (основном) потоке, а вот в сервисе...
Сервис может и порождает потоки, кое количество может быть каким угодно (в разумных предела), и каждый из этих потоков работает с той же самой dll. В dll производиться обработка с вводом/выводом данных в базу и Com\usb\ethrnet портами. Ну и рюшечки там всякие, формочки с пяток...
Как мне известно, dll в адресном пространстве приложения имеет общую область данных. Вот в сервисе и получается каша/малаша с удивительными по своей красоте спец-эффектами и неповторимыми exceptions.
Было сделано на скорую руку некое подобие костыля, общий принцып таков: весь функционал запихан в класс, в библиотеке есть ассо-массив (std::map), где ключом выступает id потока, который решился таки на работу. Тоесть, создаётся по экземпляру класса под каждый запросивший поток.
Наворочено на этот подход уже много, но и неудобство из-за этого + фейверки (забадали по самое нехачу) самого билдера + расход памяти то блин... В общем у меня к вам такой вопрос:
каким вменяемым способом можно разграничить облать данных в длл для потоков в пределах одного процесса???
Re: Dll и потоки
От: Аноним  
Дата: 08.12.10 12:32
Оценка:
Здравствуйте, _Shyrik_, Вы писали:

_S_>Здавия желаю, форумчане.

_S_>каким вменяемым способом можно разграничить облать данных в длл для потоков в пределах одного процесса???

Все наоборот, общий код, независимые данные. Ваша задача решена
Re: Dll и потоки
От: Pavel Dvorkin Россия  
Дата: 08.12.10 13:35
Оценка: +1
Здравствуйте, _Shyrik_, Вы писали:

_S_>каким вменяемым способом можно разграничить облать данных в длл для потоков в пределах одного процесса???


Хоть для DLL, хоть без DLL — TLS. См. TlsAlloc в Win32
With best regards
Pavel Dvorkin
Re: Dll и потоки
От: Leonid Troyanovsky  
Дата: 08.12.10 19:45
Оценка:
Здравствуйте, _Shyrik_, Вы писали:

_S_>Сервис может и порождает потоки, кое количество может быть каким угодно (в разумных предела), и каждый из этих потоков работает с той же самой dll. В dll производиться обработка с вводом/выводом данных в базу и Com\usb\ethrnet портами. Ну и рюшечки там всякие, формочки с пяток...


И прочие извращения.
--
С уважением, LVT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.