Win32进程间通信简述

1. 消息

使用WM_COPYDATA消息及相应的结构体来实现进程间的通信。
特点:

  1. 只能用SendMessage函数来发送消息,不能用PostMessagePostThreadMessage来发送消息,所以只能是同步,不能异步通信;
  2. 由于使用的SendMessage,所以只能用于窗口间的通信;
  3. 传输的数据中不能含有指针,因此,C++的带有虚函数类的对象不能传输,以及很多STL容器也不能传输。



2. 共享内存

使用win32的相关函数创建共享内存来实现进程间通信,上述的消息方法内部就是使用的共享内存机制。
特点:

  1. 效率比较高;
  2. 传输的数据不能包含指针,同消息
  3. 如果非要使用指针,则必须用__based修饰符来修饰,并做相应处理。



3. 管道

分为匿名管道和命名管道。
特点:

  1. 匿名管道只能用于单向通信,且不能跨主机间通信,并且只能点对点通信;
  2. 命名管道可单向可双向,能跨主机通信,也是点对点通信;
  3. 命名管道可用于IO完成端口模型。



4. 信号槽

特点:

  1. 是广播通信;
  2. 是具名的,可跨主机通信。



5. 基于Com技术的一致性数据传输(OLE)

比如剪贴板拖放技术就是基于此实现的。

你可能感兴趣的:(Windows,多进程)