muduo C++ 网络库——线程同步精要

本文深入探讨了在C++ muduo网络库中线程同步的重要概念,包括互斥器和条件变量的使用。强调了避免死锁和选择非递归互斥锁的重要性,以及条件变量在同步中的作用。同时,文章提到了并发编程的原则,并介绍了CountDownLatch等高级并发编程构件的应用。
摘要由CSDN通过智能技术生成

并发编程有两种基本模型:message passing 消息传递shared memory 内存共享

运行在多台机器上的多个进程的并行编程只有一种实用模型: message passing

 

线程同步的四项原则:按重要性排列

1.首要原则是最低限度地共享对象,减少需要同步的场合。一个对象能不暴露给别的进程就不要暴露。

2.其次是使用高级的并发编程构件,如TaskQueue,Producer-Consumer Queue, CountDownLatch等等

3.使用底层同步原语(primitives)时,只用非递归的互斥器条件变量,慎用读写锁,不要用信号量。

4.除了使用atomic整数之外,不自己编写lock-free代码,也不要用“内核级”同步原语。

 

重点讲第3条:底层同步原语的使用


互斥器:使用得最多的同步原语

 

概念补充:RAII——资源的有效期与持有资源的对象的生命期严格绑定,即由对象的构造函数完成资源的分配(获取),同时由析构函数完成资源的释放。只要对象能正确地析构,就不会出现资源泄漏问题。

 

互斥器保护了临界区,任何一个时刻最多只能有一个线程在此mutex划出的临界区内活动。单独使用mutex时,主要为了保护共享数据。原则:

-用RAII手法封装mutex的创建,销毁,加锁,解锁四个操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值