VC进程通信之一:共享存储区

来源:百度文库 编辑:神马文学网 时间:2024/04/30 06:34:09
http://hi.baidu.com/vcknow/blog/item/edfa2e97e822f56d54fb96f1.html

2007-02-12 11:46

为了传送大量数据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。

Ø         向系统申请共享存储区中的一个分区

Ø         指定该分区的关键字

Ø         如果已经给其他进程分配了这样的存储区,将使用分区的描述符返回给申请者

Ø         申请者将申请到的共享分区挂到本进程上

格式:

#pragma data_seg(“分区关键字”)

//定义变量

#pragma data_seg()

#pragma comment(linker,"/SECTION:分区关键字,RWS")

 

比如,我们在程序头部添加了以下程序:

#pragma data_seg("sharedata")

int mark=0;

#pragma data_seg()

#pragma comment(linker,"/SECTION:sharedata,RWS")

 

为程序的单击事件添加以下代码:

mark++;

CString strmark;

strmark.Format(“%d”,mark);

AfxMessageBox(strmark);

程序执行后,会弹出一个显示mark值的对话框,当您将这个程序运行两个实例时,操作时你会发现他们确实共享了内存。

如果是DLL程序,还可以在.def文件里加入shareddata READ WRITE SHARED来代替#pragma comment(linker,"/SECTION:sharedata,RWS")


(#)