您当前的位置: 首页 >  windows

令狐掌门

暂无认证

  • 1浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

windows C++多线程(七):信号量Semaphore的使用

令狐掌门 发布时间:2020-02-13 23:26:36 ,浏览量:1

     信号量与临界区,mutex不同,信号量在同一时刻运行多个线程访问同一资源,信号量的使用只要涉及到CreateSemaphore() 、OpenSemaphore()、ReleaseSemaphore()、WaitForSingleObject()和WaitForMultipleObjects()等函数。

     信号量不仅可以实现对代码的保护,还可以利用信号量实现进程单实例运行。

 

一 利用信号量实现同步,代码保护

(1)CreateSemaphore 创建一个信号量内核对象

HANDLE CreateSemaphore(
 LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // 安全属性指针
 LONG lInitialCount, // 初始计数
 LONG lMaximumCount, // 最大计数
 LPCTSTR lpName // 对象名指针
);

(2)ReleaseSemaphore

BOOL ReleaseSemaphore(
 HANDLE hSemaphore, // 信号量句柄
 LONG lReleaseCount, // 计数递增数量
 LPLONG lpPreviousCount // 先前计数
);

        在线程离开对共享资源的处理时,必须通过ReleaseSemaphore()来增加当前可用资源计数。否则将会出现当前正在处理共享资源的实际线程数并没有达到要限制的数值,而其他线程却因

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0378s