比如:多个人来取仓库物品,我们为了做到多线程的互斥,一种方法是,对每个货品加个mutex互斥锁。另种方法,对窗口(只一个)加个mutex锁,但这样的话效率都比较低。而另钟解决办法是用信号量。信号量其实是mutex的一种加强版本,如果信号量的信号值设为1则其实退化成mutex。
HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName ); 参数 lpAttributes 安全属性。如果是NULL 就表示要使用默认属 性。Windows 95 忽略这一参数。 lInitialCountsem aphore 的初值。必须大于或等于0,并且小于 或等于lMaxim umCount。 lMaximumCountSem aphore 的最大值。这也就是在同一时间内能够 锁住sem aphore 之线程的最多个数。 lpNameSem aphore 的名称(一个字符串)。任何线程(或 进程)都可以根据这一名称引用到这个 semaphore。这个值可以是NULL,意思是产生一 个没有名字的sem aphore