- 关 键 词:
- windows 95
- 共享内存
- 数据结构
- word
- 操作系统
下面给出一个共享内存的例子。在我们开发的中心监控显示软件中,工作站上的监视软件由几个独立进程组成,各自监视相应的子系统;由各监视进程共享的网络通讯模块负责网上监视信息的接收,并经由子线程写入对应监视进程的数据区。
信息接收模块和监视进程共享内存数据区,由互斥控制对象保证内存读写访问的同步。信息接收模块的程序如下:
CMutex mMutex1(TRUE, "Info1_Mutex"); //互斥对象
CSingleLock mSLock1 ( & mMutex1 );
DWORD dSize1; //信息区大小
HANDLE hMem1; //文件映像对象
InfoStruct1 pInfo1; //信息数据结构
hMem1 = CreateFileMapping(
(HANDLE(-1), 0, PAGE_READWRITE, 0,ShSize, "System1_Info");
( hMem1 == 0 ) //创建文件映像对象失败
essageBox(hwnd, "Cannot Create FileMap for SubSystem1 ","Error", MB_OK);
turn false;
if (GetLastError() == ERROR_ALREADY_EXIST) //对象已经存在
essageBox(hwnd, "FileMap Already Exists", "Error", MB_OK);
turn false;
pInfo1 = (InfoStruct1 *) MapViewOfFile( hMem1, FILE_MAP_WRITE, 0,0,0);
if ( pInfo1 == 0)
{ MessageBox(hwnd, "Cannot Create View of File Mapping", "Error", MB_OK);
seHandle( hMem1);
urn false;
}
子线程的工作:
mSLock1.Lock();
write information to pInfo1…
mSLock1.Unlock();
监视进程的程序结构同接收模块类似,如下所示:
………
(GetLastError()!= ERROR_ALREADY_EXIST) //对象不存在
essageBox(hwnd, "FileMap doesnot Exists", "Error", MB_OK);
turn false;
………
mSLock1.Lock();
read information from pInfo1…
mSLock1.Unlock();
七、结论
随着硬件速度的发展和软件规模的扩大,多任务操作系统下进程之间的通讯量也在增加,进程之间通讯的手段多种多样,其中内存共享方法的效率高,使用方便,愿本文的介绍对你有所裨益,希望能为你的学习和工作节省一点宝贵的时间。
收藏 http://www.qqread.com/vc/j622101200.html相关专题
- 共享上网专题 (2185篇文章)
- 三机互联与共享专题 (2256篇文章)
- 局域网共享专题 (2634篇文章)
- Windows操作系统安装 (15501篇文章)
- Adsl共享上网 (2230篇文章)
- Windows权限设置 (10139篇文章)
- Windows操作系统安全集 (18516篇文章)
- Windows频道 (9714篇文章)
- 在MFC中使用WPF技术 (0次浏览)



