CreateSemaphore与ReleaseSemaphore

来源:互联网 发布:原始点 淘宝 编辑:程序博客网 时间:2024/06/05 15:53

在开发软件的过程中,多线程的程序往往需要实现相互通讯,比如几个线程添加一个消息到队列里,而另一个线程在睡眠时,就需要唤醒那个线程来处理事情。在这其中,就需要使用到信号量来进行同步。CreateSemaphore是创建信号量,ReleaseSemaphore是增加信号量。
CreateSemaphoreW(
    __in_opt LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
    __in     LONG lInitialCount,
    __in     LONG lMaximumCount,
    __in_opt LPCWSTR lpName
    );
 
lpSemaphoreAttributes是信号量的安全属性。
lInitialCount是初始化的信号量。
lMaximumCount是允许信号量增加到最大值。
lpName是信号量的名称。
WINAPI
ReleaseSemaphore(
    __in      HANDLE hSemaphore,
    __in      LONG lReleaseCount,
    __out_opt LPLONG lpPreviousCount
    );
 
hSemaphore是要增加的信号量句柄。
lReleaseCount是增加的计数。
lpPreviousCount是增加前的数值返回。
举例说明:

  m_hSemaphore = CreateSemaphore(
NULL,     // 缺省的安全属性。
 0,          // 初始化为0个信号量。
cMax,     // 最大为10个信号量。
  NULL); // 不命名。

 

 

 

  if (!ReleaseSemaphore

              m_hSemaphore, // 要增加的信号量。

     1,                // 增加1.
       NULL) )     // 不想返回前一次信号量。
原创粉丝点击