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