1 / 12
文档名称:

共享内存实验报告.doc

格式:doc   大小:132KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

共享内存实验报告.doc

上传人:ttteee8 2020/8/9 文件大小:132 KB

下载得到文件列表

共享内存实验报告.doc

文档介绍

文档介绍:共事内存实验报告实验名称:共享内存姓名:谭智勇学号:14083512 实验日期:2014/10/24实验目的及要求掌握进程间共享内存的通信原理;掌握实现进程间共享内存的方法;实验一:MicrosoftVisualStudio2013环境,用C++语言编写实验二:MicrosoftVisualStudio2013环境,用C#语言编写实验内容在内存空间中创建一个共享内存空间;向内存空间写入数据打开共享内存空间读取共享内存的数据算法描述及实验步骤实验一:程序1:写入数据1•创建一个共享内存空间2•:实验二89NowTine:2014/12/23NowTine:2014/12/23NowTine:2014/12/23NowTine:2014/12/23NowTime:2014/12/23请松共享矽存公用名<默认:testmap〉:1235龍昌梅57OgAt=7b位置与入流16:42:1816:42:2016:42:2116:42:2216:42:23我是即时通讯-状态服务我启动啦!.Message1234,按【回车】读取共享内存数据01234567890位置诃辰萱:2位萱:3位置:4椅萱汚位置:8位置:9NowTine:2014/12/2316:42:18肩#必共甘存公用名〈默认:testnap>:123懸写入叙瞰囂写W::R莅置惑^暫启动状孟服莠16 NowTine=2014/12/2316:42:20□2 NowTine:2014/12/2316:42:2116:42:2248NowTine:2014/12/23我是即时通讯-消息服务我启动啦!!!六・总结(1) 对于实验一,在一个共享内存中我们可以。(2) 对于实验二,我们能直观地看出用多线程时,它在处理事件上的优点要远远大于用单个线程处理两个事件。:创建共享内存并写入数据//ShtireMemoryServer,cpp:定义控制台应用程序的入口点。#include"stdafx・h"#include<windows・h>#include<process・h>^include<>#include<iostream>usingntunespcicestd;classCShareMessage{public:CShareMessage(LPCTSTRlpszFileName,intnFileSize,intbServer);"CShtireMessage();private:HANDLEm_hFileIlandle;LPVOIDm_pBuffer;};CShareMessage::CShareMessage(LPCTSTRIpszFileNanie,intnFileSize,intbServer){if(bServer){〃创建一个共享内存空间m_hEileikindle二CreateEileMapping(lNVALlDJlANDLE_VALUE,NULL,PAGE_READWRITE,0,nl;订eSize,IpszFileNanie);}物理文件句柄安全设置保护设置高位文件大小低位文件大小共事内存名称/*INVALIDJIANDLE_VALUENULLPAGE_READWR1TE0nFileSizeIpszEileName*/else共事内存实验报告〃打开共事内存空间m_hFileHandle=OpenFi1eMapping(ESS,FALSE,lpszF订eName);ESSFALSEIpszEileName访问模式继承模式文件映射对象名称*/m_pBuffer=(LPVOID)MapViewOfFile(m_hFilellandle,ESS,0,0,0);/*mhFilellandle1;ESS000*/己创建的文件映射对象句柄访问模式文件偏移的高32位文件偏移的低32位映射视图的大小if(bServer)//若bServer-1,向内存空间写入一个数{*(DWORD*)m_pBuffer二14083512;}else{//若bServer-0,贝!J显示刚才向内彳F空间中写入的数printf(^studentnumber=%d\n,z,*(DWORD*)m_pBuffer):}}〃释放内存地址空间CShareMessage::'CShareMessage(){UnmtipViewOfFile(mpBuffer);//解除对映射对象的映射。C1oselland1e(m_hl;ilelkindle);〃关闭句柄}int_tniciin(intargo,_TCHAR*argv[I){CShareMesstigeset(_T("MyDaXtT