进程间通信有多种方式,这篇博客简单介绍,并且会详细介绍共享内存方式的进程间通信,其四要素为:设定共享内存区域、找出共享内存、同步处理、清理。本篇博客提供一个例子,详细使用参见这两篇博客:用法参考1用法参考2

进程间通信的方式大致有:

        1.匿名管道,底层通过网络实现通信,提供字节模式和消息模式

        2.消息管道,使用Windows消息,一段发送,一段接受

        3.套接字,Socket网络编程

        4.剪切板,CWnd提供支持

        5.动态数据交换

        6.邮件槽,基于广播通信体系,是一种单向通信机制

        7.共享内存,这种方法建立一片共享内存区,两个程序都可以访问这篇区域

此外,还有其它方式,接下来会详细介绍共享内存方式的进程间通信。

1.在程序A中,创建一片内存共享区域,并设置同步变量

         这里注意,指定了内存区域的大小

2.在程序B中,可以通过设置的同步量抓取数据

3.当要发送数据时,程序A中写入共享内存区域,同时要保证同步

        将要传送的数据写入共享内存区,给B程序抓取

        第二段代码为A程序创建B程序的进行,如果B进程还未被创建,CreateProcess 就根据可执行文件名创建了一个进程,这不是必须的

4.B程序根据同步时间,来抓取数据

        读取时,首先锁住共享内存区域,然后使用MapViewOfFile获取共享内存区的首地址,然后取出数据即可

        在A中,SetEvent触发事件,在这里,ResetEvent进行复位

5.清理

        在A程序和B程序中都要进行清理。

 

        特别说明,每调用一次MapViewOfFile,就会分配一片与共享内存大小相同的内存区域,一般一个进程中只用调用一次,如果重复调用会出现内存不足。

        OK,See You Next Chapter!

发表评论

电子邮件地址不会被公开。 必填项已用*标注