- UID
- 1
- 精华
- 积分
- 76361
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
当我写了一个程序,我希望当这个程序同时运行两遍的时候,两个进程之间能共享一些全局变量,怎么办呢?很简单,使用VC\VC++的共享数据段。
#pragma data_seg("foo")//建立一个叫“foo”的数据段
#pragma comment(linker,"/SECTION:foo,RWS")//设置段foo的属性为“可读可写共享”
int bar=0;//这些变量是共享的,不同的进程之间都可以访问到。
int bar233=1;
int foobar=9;
int foobar233=233;
#pragma data_seg()//恢复到正常段继续编程
像这样弄好之后,相同EXE不同的进程之间对上面四个全局变量的访问是共享的,比如某进程把bar的值改为2333333,那么在别的进程里面,bar的值都变成了2333333。
因为是同一个EXE,所以如果是不同的EXE,效果不同。比如a.exe有个共享数据段foo,b.exe也有共享数据段foo,虽然都有名字一样的共享数据段,但是它们之间并不会互相产生影响,因为EXE不一样。(EXE名不一样或EXE内容不一样)
大家可能有个问题,不同的EXE之间怎么做到共享数据?其实很简单,我们用DLL实现这个功能。
让DLL也弄一个这样的共享数据段,然后让不同的EXE一起载入这个DLL,就能实现不同的EXE之间共享数据了。 |
|