进程通信方法之文件映射易语言源码创建方(服务端)
创建共享文件对象CreateFileMapping(映射文件对象句柄,安全保护,访问权限,对象大小,共享内存大小,映射文件名称)(注意:映射文件名双方必须一致)
共享文件对象映射到本进程内存地址MapViewOfFile(共享内存地址,访问权限,文件映射起始偏移的高位,文件映射起始偏移的低位, 映射文件的字节数)(一般情况:填写共享内存地址和访问权限即可,其他参数默认置0)
创建事件CreateEventW(事件对象继承,手动重置,初始状态,事件对象名称)用于不同进程间的同步【信号灯事件】
连接方(客户Duan)
[color=rgba(0, 0, 0, 0.75)]打开共享文件对象 OpenFileMappingA(访问权限,对象句柄继承,映射文件名)
共享文件对象映射到本进程内存地址MapViewOfFile(共享内存地址,访问权限,文件映射起始偏移的高位,文件映射起始偏移的低位, 映射文件的字节数)
创建事件同样数量的事件CreateEventW(事件名称要与服务端一致)。在创建事件时系统就会发现这个事件已经被另一方创建过,就直接将创建好的句柄返回来。实现进程同步读取
进程同步:
例如 现有俩个事件分别是get_read和get_wri;
初始状态get_read和get_wri事件的信号灯都是灭的。先启动创建方,然后启动连接方时,在初始化时将创建方的get_wri事件的信号灯点亮,这样创建方获得信号灯就可以直接写入共享内存中并将get_read灯点亮将get_wri灯弄灭。然后连接方获得get_read灯亮就可以读取共享内存中的数据,读取完毕后再将get_read灯弄灭将get_wri灯点亮。这样就实现了进程间的通讯。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系贝贝进行处理。本站默认解压密码:www.hibbba.com
评论(0)