Window 环境:
1. 多进程通信:匿名管道,命名管道,共享内存,文件映射,邮件槽,剪贴板,动态数据交换,对象连接和嵌入,动态连接库,远程过程调用,NetBios函数,Sockets, WM_COPYDATA消息。
参考: http://www.cnblogs.com/erwin/archive/2007/04/16/715084.html
2. 多线程通信方式:同一进程时,可用全局变量;通过线程句柄发送消息(不同进程的同一线程句柄值是否表示同一个线程)。
3. 多线程同步:事件,信号量,互斥量(也可用于多进程),临界区间,互锁访问(原子访问)。
参考:http://www.kuqin.com/windows/20070908/943.html
-
3.1. 事件(Event)
-
事件处于激发状态(signaled or true)或未激发状态(unsignaled or false)。
-
根据状态变迁方式,事件分为 手动设置(SetEvent 和 ResetEvent 来设置状态)和自动设置
(事件处理后,自动回复到没有时间状态)。 -
创建事件函数:CreateEvent,返回事件句柄,参数包括状态设置方式,初始状态,事件名称。
-
event 对象属于内核对象,所以进程 B 可通过事件名调用进程 A 中 event 对象的句柄(OpenEvent)。这个句柄用于 ResetEvent,SetEvent,WaitForMultipleObjects 函数中。
- 3.2. 临界区(Critical section)
| |
| |
| |
| |
| |
|
|
-
3.3.互斥量(mutex)
| |
| |
| |
| |