大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 其他相关 -> VC++中实现程序互斥运行

VC++中实现程序互斥运行

时间: 2021-07-31 作者:daque

在软硬件的开拓进程中,偶尔须要遏制少许步调不许同声运转,也即是多个步调间互斥运转(还囊括遏止同一步调运转多个范例)。对准这一题目,咱们在visual c++ 6.0中运用外存映照文献实行了多个步调间的互斥运转。    在报告简直的编制程序本领之前,让咱们先来看看和外存映照文献操纵相关的几个要害的因变量:    1)createfilemapping因变量为指定的文献创造一个文献映照东西,该因变量的原形如次:    handle createfilemapping(     handle hfile, // 用来映照的文献句柄     lpsecurity_attributes lpfilemappingattributes, // 外存映照文献的安定刻画符     dword flprotect, // 文献的养护办法     dword dwmaximumsizehigh,    // 文献映照东西的最大长度的高32位     dword dwmaximumsizelow,    // 最大长度的低32位     lpctstr lpname          // 指定这个外存映照文献的名字    );    2)mapviewoffile因变量将文献的视图映照到一个过程的地方空间上,归来lpvoid典型的外存南针,经过它,就不妨径直考察文献视图中的消息:    lpvoid mapviewoffile(     handle hfilemappingobjct,          // 映照文献东西句柄     dword dwdesiredaccess, // 考察形式     dword dwfileoffsethigh,          // 文献偏移地方的高32位     dword dwfileoffsetlow,          // 文献偏移地方的低32位     dword dwnumberofbytestomap      // 映照视图的巨细    );    在visual c++ 6.0中咱们用默许办法天生鉴于对话框的运用步调,在步调的初始化阶段,在cwinapp派生类的initinstance因变量的发端处,增添以次代码:    { handle hmap=createfilemapping((handle)0xffffffff, null,  page—readwrite, 0, 128, ″mutexrunning″);    if(hmap==null) // 即使创造波折  { afxmessagebox(″创造用来互斥运转的外存映照文献东西波折!″,  mb—ok|mb—iconstop);  return false; }  else if(getlasterror()==error—already—exists)  { lpvoid lpmem=mapviewoffile(hmap, file_map—write, 0,0,0);  cstring str=(char?)lpmem;  unmapviewoffile(lpmem);  closehandle(hmap);  afxmessagebox(str, mb—ok|mb—iconstop);  return false; }  else  { lpvoid lpmem=mapviewoffile(hmap, file—map—write, 0,0,0);  strcpy((char?)lpmem, ″xxx步调正在运转!″);  unmapviewoffile(lpmem);  }  afxenablecontrolcontainer();    ......    //这边不妨在initinstance因变量结果returnfalse之前挪用     closehandle(hmap);    //封闭外存映照文献东西句柄  return false;    }    之上的步调在visual c++ 6.0中已调节和测试经过。 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.