进程共享数据段#pragma data_seg用法
建立一个数据段并定义共享数据,其具体格式为:
-------------------------------------------------------------------------------------------
#pragma data_seg ("shareddata")
HWND sharedwnd = NULL;//共享数据
#pragma data_seg()
#pragma comment(linker,"/section:shareddata,RWS")
HWND mwnd = NULL;//
-----------------------------------------------------------------------------------------------------
1,#pragma data_seg()一般用于DLL中。因为dll可以很容易得被多个进程加载,
这样,这个数据段中的变量就可以被多个进程共享。
值得注意到是:在win2000,winxp 等系统中,在dll中定义的全局变量(若不放在该共享数据段中)
如上面代码中mwnd,其实是不能被多个进程所共享的。(win98可以共享)
2,共享数据必须初始化,否则微软编译器会把没有初始化的数据放到.BSS段中,
从而导致多个进程之间的共享行为失败。
3,不同的进程调用这个定义了共享数据段的dll文件时,
很容易犯一个错误,即加载了该dll文件的进程各用了一份该dll文件的拷贝。
要确保这些进程加载的dll是同一份,而不是dll的拷贝,才能够共享数据段中的数据。
至于为什么呢?本人还在探索中,望大虾们指点迷津。
进程共享数据段#pragma data_seg原来要这么用
最新推荐文章于 2022-03-21 16:08:47 发布