powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пара вопросов про длл и многопоточность
22 сообщений из 22, страница 1 из 1
Пара вопросов про длл и многопоточность
    #39787371
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некий девайс (физический) к которому идет программа, и также сдк. Функционал реализует длл. СДК требует чтобы перед всеми функциями была вызвана функция инициализации, мол ресурсы выделяет.

А вот тут загада - эта функция инициализации с девайсом не общается, т.к. контактных данных у нее нет, они только в следующей функции коннекта. Какого-то хендла эта функция тоже не выдает. Как длл-ка может хранить хотя-бы адрес где она что-то выделила, если это всего лишь сборник функций? (доп процессов никаких не запускает, файлов не плодит)

Второй вопрос - "фирменная" программа общается с несколькими девайсами одновременно, явно в многопотоке, пример из СДК только по очереди. Если инициализация что-то выделила и как-то где-то хранит, как программа это распараллеливает? (Длл-ка одна и та-же)
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787380
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlЕсть некий девайс (физический) к которому идет программа, и также сдк. Функционал реализует длл. СДК требует чтобы перед всеми функциями была вызвана функция инициализации, мол ресурсы выделяет.

А вот тут загада - эта функция инициализации с девайсом не общается, т.к. контактных данных у нее нет, они только в следующей функции коннекта. Какого-то хендла эта функция тоже не выдает. Как длл-ка может хранить хотя-бы адрес где она что-то выделила, если это всего лишь сборник функций? Не только
http://wm-help.net/books-online/book/59464/59464-12.html#h19
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787382
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

Не очень понял, в какой строке этого талмуда ответ на вопрос?
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787383
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlКак длл-ка может хранить хотя-бы адрес где она что-то выделила, если это всего лишь сборник функций?
dll может содержать и код, и данные

iskatelsqlЕсли инициализация что-то выделила и как-то где-то хранит, как программа это распараллеливает? (Длл-ка одна и та-же)
ThreadId позвлляет различить потоки, да и TLS никто не отменял
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787385
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

данные она может содержать, но статические. при создании прилинкованные, где она адрес выделенной памяти то хранит? А потоки различать - так в вызовы не передается ничего такого, ты про нее говоришь как про отдельный процесс, это простая длл-ка.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787389
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlгде она адрес выделенной памяти то хранит?
в статической переменной
iskatelsqlА потоки различать - так в вызовы не передается ничего такого, ты про нее говоришь как про отдельный процесс, это простая длл-ка.
GetCurrentThreadId()
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787390
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилGetCurrentThreadId()

А эту она импортирует, да. Не очень понял про статическую переменную правда...

Ну и основной вопрос - значит и я могу без опаски ее в потоках использовать, или есть подводные камни? В СДК об это ни слова
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787392
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlСоколинский Борис,

Не очень понял, в какой строке этого талмуда ответ на вопрос? Вы за 3 минуты смогли его осилить? Впрочем вопрос свидетельствует о том, как.

Вы уже знаете, что глобальные и статические переменные ЕХЕ-файла пе разделяются его параллельно выполняемыми экземплярами. В Windows 98 это достигается за счет выделения специальной области памяти для таких переменных при проецировании ЕХЕ-файла на адресное пространство процесса, а в Windows 2000 — с помощью механизма копирования при записи, рассмотренного в главе 13 Глобальные и статические переменные DLL обрабатываются точно так же. Когда какой-то процесс проецирует образ DLL-файла на свое адресное пространство, система создает также экземпляры глобальных и статических переменных .
Перевод слегка корявый, но смысл понятен - это переменные именно библиотеки.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787396
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

Осилил я его еще году в 2001, сейчас мельком пролистал, но никогда не приходило в голову что длл может сама создавать статические переменные.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787405
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlдлл может сама создавать статические переменные.
они просто в сегменте данных расположены
iskatelsqlНу и основной вопрос - значит и я могу без опаски ее в потоках использовать, или есть подводные камни? В СДК об это ни слова
если ни слова - ничего заранее сказать нельзя
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787419
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlНу и основной вопрос - значит и я могу без опаски ее в потоках использовать, или есть подводные камни? В СДК об это ни слова Подводных камней там вагон и маленькая тележка.
Задайте вопрос производителю прежде чем использовать.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787423
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил TLS никто не отменял
В WinXP для DLL его нет.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787430
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИзопропил TLS никто не отменял
В WinXP для DLL его нет.
TLS есть, просто писать в dll _declspec(thread) нельзя в XP при явной загрузке (LoadLibrary)

https://docs.microsoft.com/ru-ru/windows/desktop/Dlls/dynamic-link-library-data
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787431
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в документации не заявлено что функции потокобезопасны (threadsafe), то они не предназначены для многопоточного использования. Поэтому оберни все вызовы функций мутексом: заблокировал мутекс, поработал с функциями, разблокировал.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787433
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima Tпропущено...

В WinXP для DLL его нет.
TLS есть, просто писать в dll _declspec(thread) нельзя в XP при явной загрузке (LoadLibrary)

https://docs.microsoft.com/ru-ru/windows/desktop/Dlls/dynamic-link-library-data
Верно, т.е. в общем случае его нет, наступил на эти грабли
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787438
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли в документации не заявлено что функции потокобезопасны (threadsafe), то они не предназначены для многопоточного использования. Поэтому оберни все вызовы функций мутексом: заблокировал мутекс, поработал с функциями, разблокировал. Во-первых, это не все проблемы решает.
Во-вторых - на кой черт тогда многопоточность?
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787439
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

ну дык при явном получении слота проблем нет
(и в общем случае TLS - таки есть)
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787535
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисDima TЕсли в документации не заявлено что функции потокобезопасны (threadsafe), то они не предназначены для многопоточного использования. Поэтому оберни все вызовы функций мутексом: заблокировал мутекс, поработал с функциями, разблокировал. Во-первых, это не все проблемы решает.
Какие проблемы остаются?
Соколинский БорисВо-вторых - на кой черт тогда многопоточность?
Вопрос к разработчику DLL. Похоже он решил что пользователям DLL многопоточность не потребуется.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787540
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlникогда не приходило в голову что длл может сама создавать статические переменные.
При загрузке DLL вызывается DllMain() , оттуда происходит инициализация окружения DLL.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787549
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКакие проблемы остаются?
Например необходимость продолжения работы в том же потоке, в котором
выполнялось первое обращение типа open, create etc
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787550
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСоколинский Бориспропущено...
Во-первых, это не все проблемы решает.
Какие проблемы остаются?
Например, обработка сообщений, которые прилетают только в поток-создатель окна. Менеджер памяти может неправильно работать, отрисовка и т.д.
...
Рейтинг: 0 / 0
Пара вопросов про длл и многопоточность
    #39787823
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисна кой черт тогда многопоточность?
Так никто и не утверждает, что в данной конкретной DLL используется многопоточность. Более того, никто не утверждает что её функции потоконебезопасны. Аффтар просто бредит.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пара вопросов про длл и многопоточность
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]