Глобальная переменная в общей библиотеке / dll, разделенный через процесс

Я развиваю общую библиотеку (.so) и dll. У меня есть глобальная переменная, которая обновлена в нескольких нитях. Таким образом, у меня есть замок mutex для синхронизации.

Я не ясен, разделены ли глобальные данные в общей библиотеке через процесс. Если это тогда, я должен использовать семафоры для синхронизации. Поскольку я понимаю, что глобальные переменные - часть сегмента данных, таким образом, я хотел понять, как dll управляет глобальными данными через процессы. Любая информация w.r.t. dll формат и сегмент будет полезна.

Спасибо.

11
задан MatrixFrog 30 December 2009 в 23:29
поделиться

2 ответа

По умолчанию глобальные переменные не разделяются между процессами.

Однако можно использовать сегмент данных (data_seg) для распределения глобальных переменных между процессами. Более подробную информацию о MSDN можно найти в статье под названием "Как обмениваться данными в моей DLL с приложением или с другими DLL?"

.
11
ответ дан 3 December 2019 в 09:41
поделиться

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

.
0
ответ дан 3 December 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: