还有一点的哈:
信号量的关键操作
操作代码分别为Win32以及POSIX
(1)创建
CreateSemaphore、sem_init
创建信号灯,可以将信号量中的值初始化为某个需要的非负整数。
(2)等待(也即PV中的P)
WaitForSingleObject、sem _wait
线程等待信号量,如果值大于0,则获得,值减1;如果值等于0,则直线程进入等待状态,直到信号量值大于0或者超时。
(3)释放(也即PV中的V)
ReleaseMutex、sem _post
执行释放信号量,则值加一;如果此时有正在等待的线程,则唤醒该线程。
(4)销毁
CloseHandle、sem_destroy
被注销的信号灯sem要求已没有线程在等待该信号灯,否则返回-1
|