c++多线程基础三 --- 同步并发
2021-03-07 02:28
阅读:785
标签:lang 表达 ffffff sdn 技术 term http tps cond
1 条件变量
1.1 condition_variable
std::condition_variable实际上是一个类,是一个和条件相关的类;
-
condition_variable成员函数:
结合std::unique_lock<:mutex> 使用 -
使用规则:
-
wait 使用
void wait( std::unique_lock<:mutex>& lock ); (1) -------------------------------------------------------- template (2) void wait( std::unique_lock<:mutex>& lock, Predicate pred );
- (1) 调用:相当于 (2)的第二个参数为false,wait()将解锁互斥量,并阻塞到本行;
- (2) 调用:第二个参数为true,wait()直接返回并继续执行。
-
notify_one唤醒线程
- wait()不断尝试获取互斥量锁,如果获取不到那么流程就卡在wait()这里等待获取,如果获取到了,那么wait()就继续执行,获取到了锁
- 如果wait有第二个参数就判断这个lambda表达式。
a): 如果表达式为false,那wait又对互斥量解锁,然后又休眠,等待再次被notify_one()唤醒
b): 如果lambda表达式为true,则wait返回,流程可以继续执行(此时互斥量已被锁住)。 - 如果wait没有第二个参数,则wait返回,流程走下去。
c++多线程基础三 --- 同步并发
标签:lang 表达 ffffff sdn 技术 term http tps cond
原文地址:https://www.cnblogs.com/lihaihui1991/p/14284584.html
上一篇:子进程和线程
下一篇:人生苦短,我用Python
评论
亲,登录后才可以留言!