阅读637 返回首页    go 阿里云 go 技术社区[云栖]


线程同步之Semaphore

线程同步之信号量

Semaphore

信号量。

它维护一个计数,当值大于0时,信号量对象处于已传信状态。通常用数值表示可用资源的个数。

WaitForSingleObject()令信号量减一;ReleaseSemaphore()令信号量加一。

微笑分析:

信号量值为6,MAX_SEM_COUNT ,而用到信号量的线程有8,THREADCOUNT,不包括main函数线程。所以前6个创建好的线程WaitForSingleObject()返回值为WAIT_OBJECT_0,不会阻塞。而接下来的线程WaitForSingleObject()返回值为 WAIT_TIMEOUT,它们等其他P操作成功的线程 Sleep(5)后做V操作,才能获得WAIT_OBJECT_0返回值。
8个ThreadProc线程执行完毕,主函数中WaitForMultipleObjects()函数才返回。

最后更新:2017-04-03 05:39:50

  上一篇:go 阿里云 OCS SDK for NodeJS介绍
  下一篇:go 机房收费系统之导出为Excel