吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2539|回复: 4
上一主题 下一主题
收起左侧

[C&C++ 转载] 【笔记】线程之信号量

[复制链接]
跳转到指定楼层
楼主
2016wapjpc 发表于 2017-7-25 13:42 回帖奖励
我们在解决问题时,希望一个线程跑结束时,同时其它的线程跑起来,这是复杂的线程控制。那就用到了信号量。emaphore可以用于做流量控制,比如数据库连接。假如有一个需求,要读取几万个文件的数据,
因为都是IO密集型任务,我们可以启动几十个线程并发的读取,但是如果读到内存后,还需要存储到数据库中,而数据库的连接数只有10个,
这时我们必须控制只有十个线程同时获取数据库连接保存数据,否则会报错无法获取数据库连接。这个时候,我们就可以使用Semaphore来做流控

CreateSemaphore(

    __in_opt LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,

    __in     LONG lInitialCount,

    __in     LONG lMaximumCount,

    __in_opt LPCWSTR lpName

    );


lpSemaphoreAttributes是信号量的安全属性。

lInitialCount是初始化的信号量。

lMaximumCount是允许信号量增加到最大值。

lpName是信号量的名称。


ReleaseSemaphore(

    __in      HANDLE hSemaphore,

    __in      LONG lReleaseCount,

    __out_opt LPLONG lpPreviousCount

    );


hSemaphore是要增加的信号量句柄。

lReleaseCount是增加的计数。

lpPreviousCount是增加前的数值返回。




发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
Rover榴莲 发表于 2017-7-25 13:59
路过支持,顶一下
3#
520wangshun 发表于 2017-7-25 14:41
4#
笨小孩123 发表于 2017-7-27 08:42
5#
四月天 发表于 2017-11-13 21:58
学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-9-23 23:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表