关于共享对象中的全局变量的引用问题!


如果一个共享对象lib.so中定义了一个全局变量G,而进程A和进程B都使用了lib.so,那么当进程A改变这个全局变量G的值时,进程B中的G会受到影响吗?

Linux windows

狮心王丨理查 11 years, 3 months ago

不会。因为G其实是存储在bss中的,bss类似数据段,每个进程都有自己的副本。这样看起来,共享库的全局变量与程序内部全局变量没有区别,因为都是数据段(或bss段),都会有自己的副本。如果想通过全局变量进行进程间通信,可以采用"共享数据段"技术,使得不同进程访问同一个全局变量。而对于一个进程,如果想让变量不被多个线程共享,即多个线程拥有自己数据段的副本,可以采用“线程局部存储”技术。

NeoJAY answered 11 years, 3 months ago

Your Answer