Windows平台进程间通信: 互斥体,同步段,信号量
时间:2010-09-02 来源:kgisme170
如果不指定名字,那么Mutex和Semaphore就是匿名的,只能进程内使用了。
1. Mutex的例子: 这个程序保证只有一个实例运行。
#include"stdafx.h" |
注意到,Mutex通常用于线程之间的同步,必须在CreateMutex的时候指定属主,那么WaitForSingleObject就会等待属主线程调用ReleaseMutex释放互斥锁。就像下面这个例子:
/* |
2. 用Semaphore的例子: 信号量就是一个全局计数器。下面的程序保证自己运行不超过3个实例。
#include"stdafx.h" |
CreateSemaphore创建的时候如果起始计数=0,那么WaitForSingleObject()作为V原语是会阻塞的。ReleaseSemaphore作为P原语是增加计数。下面的程序说明了Semaphore的计数工作方式:
#include<windows.h> |
子线程1得到
主线程执行
子线程2得到
Press any key to continue . . .