是共享库/ dll中的全局变量,跨进程共享

时间:2009-12-30 09:40:28

标签: dll shared-libraries

我正在开发一个共享库(.so)和dll。我有一个全局变量,它在多个线程中更新。所以我有用于同步的互斥锁。

我不清楚共享库中的全局数据是否跨进程共享。如果是,那么我需要使用信号量进行同步。据我所知,全局变量是数据段的一部分,所以我想了解dll如何跨进程管理全局数据。任何信息w.r.t. dll格式和细分将有所帮助。

感谢。

2 个答案:

答案 0 :(得分:11)

默认情况下,不会在进程间共享全局变量。

但是,您可以使用数据段(data_seg)来跨进程共享全局变量。您可以在标题为“How do I share data in my DLL with an application or with other DLLs?

的文章中找到有关MSDN的更多信息

答案 1 :(得分:0)

绝对没有。每个进程都有自己的虚拟内存空间,并且看不到其他进程的内存。两个进程甚至可以在同一地址存储不同的值,例如1000000 - 因为它们的虚拟地址“1000000”被映射到不同的物理存储单元(例如,对于第一个进程为“2000000”,对于第二个进程为“3000000”。 共享dll不会改变任何内容。