搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
代码探险家
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Hadoop较全面的概述_hadoop2.0改进与提升hadoop1.0版本与hadoop2.0版本的区别组件hadoop1.
2
python语言程序设计 答案,python程序设计教程题库_根据圆半径计算圆面积,此题目是自动批阅类型,请注意:获得输入使用input
3
毕业设计:python汽车销售数据爬取分析可视系统 Flask框架 requests爬虫 Echarts可视化(源码)✅_销售数据分析系统
4
苹果电脑能玩赛博朋克2077吗 如何在mac上运行赛博朋克2077 crossover能玩什么游戏
5
大数据与人工智能_人工智能及大数据应用人力架构
6
文献学习-36-自主缝合的现状:系统综述_伯克利大学 自主手术
7
[学习][笔记]设计模式(基于C/C++实现)<七>桥接模式_c 实现网口桥接
8
《我的阿勒泰》观后感(一、什么叫做有用)_我的阿勒泰观后感800字作文
9
关于对正则表达式中\b单词边界的理解_单词边界是什么意思
10
RAG进阶(一): 多重查询(Multi Query)_multi-query
当前位置:
article
> 正文
WINDOWS下解决进程间通信的方法:内存映射文件技术_windows内存映射高速通讯
作者:代码探险家 | 2024-07-27 05:34:55
赞
踩
windows内存映射高速通讯
进程之间有时需要通信。系统提供的进程之间的通信机制在底层实现上都是利用内存映射文件技术。一个进程所能访问的所有低2GB地址都是自己的地址空间,当访问内核地址空间时就会受到内核的限制。这样一个进程当然无法访问其它进程了。为解决进程间通信的问题,内存映射文件技术被利用作为解决方案。原来内存映射文件只映射类似磁盘一类的存储器上的文件。而为了更快速地在进程之间通信,内存映射文件还可以提交物理内存。实现方法是通过访问同一个内存映射文件对象(映射到物理内存),两个进程或多个进程就能够访问到同一块物理内存,这样一个进程写到物理内存的数据,其它进程就能够看到了。而Windows CE虽然每个进程只占有32MB的地址空间,而且所有进程全部处于4GB的地址空间中,但是彼此还是不能够随意访问的。在Windows CE下除了使用内存映射文件技术外,还有一种方法也很适合使用,就是利用对象存储。对象存储本身使用RAM文件系统,用普通的操作文件的API就可以创建、读取存在于对象存储区域内的文件。
/Windows 目录就存在于对象存储区域内。我们可以利用在/Windows目录下创建文件来实现进程间通信。这种方法既实现简单,只需调用几个文件API函数,又可以减少通信时间,因为/Windows目录存在于物理内存中,数据I/O当然很快了。利用对象存储来实现进程之间的通信是我自己想出来的,MSDN或其它文档并没有这方面的说明。需要注意的就是对象存储区域的大小。另外从实现的代码量上看也不如内存映射文件技术。
下面讲解如何利用内存映射文件实现进程之间的通信。假设进程A和进程B需要通信,那么进程A需要先创建一个内存映射文件(之前不必调用CreateFileForMapping函数来创建文件,因为不需要创建文件)。这个内存映射文件可以是在永久存储器中,也可以是在内存中。为了减小通信时间,最好提交物理内存。进程A在调用CreateFileMapping函数时,参数1指定为INVALID_HANDLE_VALUE,这表示这个内存映射文件对象将要把物理内存提交到地址空间中。最后一个参数一定要指定一个名字。进程B也同样调用CreateFileMapping函数,而且参数相同。内核会根据名字来判断是否已经存在一个内存映射文件对象,如果创建了就返回原来的对象的句柄。接下去就不用细说了。参照5.1去执行就可以了。要注意的是进程B调用CreateFileMapping函数后要按如下代码检验函数执行结果:
HANDLE hMap;
hMap = CreateFileMapping(INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
1000,
L"abc");
if (hMap == NULL || GetLastError() != ERROR_ALREADY_EXISTS)
{
MessageBox(L"create file mapping fail");
return;
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/代码探险家/article/detail/888904
推荐阅读
article
linux
、
windows
、
macos
,
命令
终端清屏...
在Linux、Windows和macOS的
命令
终端中,清屏的
命令
或方法各不相同。快捷键:在Windows的某些终端模拟器...
赞
踩
article
linux
、
windows
、
macos
清空本地
DNS
缓存...
然后输入密码以继续执行。打开“终端”应用程序。
linux
、
windows
、
macos
清空本地
DNS
缓存 ...
赞
踩
article
Windows
Server2016
服务器
AD(
域
控
服务器
)的安装和配置实验_
server2016
搭...
搭建AD
域
控
服务器
、计算机加入
域
环境、创建OU和
域
用户、
域
用户登陆测试_
server2016
搭建
ad
域
服务器
server...
赞
踩
article
大
模型
【
Qwen2
-
7B
本地部署(WEB版)】(
windows
)_
qwen2
7b显卡需求...
大
模型
是截止2024年上半年最强的AI,
Qwen2
是刚出来的号称国内最强开源
大
模型
。这是
大
模型
系列的第一篇文章,旨在快速...
赞
踩
article
通义千问
本地
部署
教程
Qwen
-
1.5
-
1.8
B/7B/14B
Windows
-详细认真版_qwen...
实现了在
Windows
上
部署
通义千问的
Qwen
-7B-Chat
Qwen
-
1.5
-
1.8
B 模型且实现多轮对话和流式输出...
赞
踩
article
【
python
】
PyQt5
的
窗口
界面的各种
交互
逻辑实现,轻松掌控图形化界面程序_
python
win...
在
PyQt5
中,可以使用信号和槽来处理控件的
交互
状态。控件状态表明了这个控件是否是可用的,比如一个按钮,通常使用灰色来表...
赞
踩
article
Parallels
Desktop
19
年度更新:支持
Touch
ID 登录
Windows
系...
Parallels
发布了最新版本的
Parallels
Desktop
19
for Mac,这是一款用于在 Mac ...
赞
踩
article
如何在
windows
局域网与
服务器
同步
时间
_
windows
时间
同步
...
本文详细介绍了如何在Windows
服务器
上开启NTP服务,设置为主动
时间
源,重启W32Time服务,
同步
网络
时间
,以及开...
赞
踩
article
手把手教在Windows
安装
MySQL
_
mysql
windows
安装
...
手把手
安装
教程_
mysql
windows
安装
mysql
windows
安装
一、进...
赞
踩
article
Navicat16.3
.9
安装
和免费试用教程 -
Windows
(2024)_
navicat
win...
Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Mari...
赞
踩
article
Navicat
16.3
.9
安装
和免费使用教程 -
Windows
(2024)_
navicat
16....
Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Redi...
赞
踩
article
2022最新版
windows
11下的
MySQL
安装
,手把手教学,超详细_
windows
11
安装
m...
目前官方最新版本是8.0.26,考虑到其稳定性、可靠性还需一定周期保证,所以使用官方版求稳定仍然建议5.7系列。输入qu...
赞
踩
article
Windows
下载
MySQL8.0
.
18
详细
安装
教程(新手)_
mysql80
18
安装
windows
...
本人是新手,第一次发布博客,写这个只是为了完整的记录我
下载
的过程,希望可以帮助到有需要的人。文采不好,勿喷,谢谢!一、安...
赞
踩
article
Navicat16.3.9
安装
和
免费
使用教程 -
Windows
(2024)_
navicat
免费
版本
...
Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Redi...
赞
踩
article
Odoo
(一):在
windows
平台上搭建python2.7+
odoo
10.0+pycharm201...
文章目录在
windows
操作平台下进行
Odoo
的安装一、初衷二、尝试进展如何三、
odoo
10参考资料依赖文件开始安装Py...
赞
踩
article
在
Windows
上用
Llama
Factory
微调
Llama
3的基本操作_
llama
-factor...
我们构造数据集的时候,最简单的方法就是只构造instruction和output。当然,如果训练数据集比较小的话,测试的...
赞
踩
article
Windows
+
VScode
配置
与使用
git
,超详细教程,赶紧收藏吧_
vscode
配置
git
...
本文详细介绍了如何在
VScode
中
配置
Git,以便在不离开IDE的情况下方便地将代码提交到GitHub仓库,包括安装Gi...
赞
踩
article
Flutter
通过 VS
code
连接
Android
模拟器
(
Windows
)_vs
code
...
最近需要学习
Flutter
进行混合开发,配置信息比较容易忘记,在这里记录一下。_vs
code
安卓
模拟器
vs
code
...
赞
踩
article
windows 本地
搭建
git
仓库
_
Windows
搭建
Git
仓库
服务器...
有时候想
搭建
个本地
Git
仓库
来实现协同开发,图方便可以在
Windows
上
搭建
一个本地的
Git
仓库
。方法有两个,一个是通过...
赞
踩
article
windows
显示
苹果
分区
_让你的联想电脑也可以用上
苹果
系统
...
今天我们拿联想小新PRO 13 2019来安装macOS Catalina
苹果
系统
电脑配置规格详细信息电脑型号联想小新 ...
赞
踩
相关标签
linux
windows
macos
缓存
服务器
运维
大模型
GPT
Qwen2
python
qt
PyQt5窗口交互
控件信息提示
窗口焦点控制
控件可视化
控件可见性
mysql
数据库
java