C++并发编程实战笔记-部分函数

本文介绍了C++并发编程中的一些关键函数,包括std::thread::hardware_concurrency()用于获取硬件线程数,std::lock_guard和std::unique_lock用于线程安全的加锁解锁,std::once_flag及call_once确保函数仅执行一次,以及future、async和promise在异步编程中的应用。lock_guard提供简单的线程安全,而unique_lock则更灵活,能应对复杂场景。
摘要由CSDN通过智能技术生成

我看这本书真的是云里雾里的,尤其是中文版,感觉真的是,一言难尽,建议可以去看看muduo那本书

在这里记录一下,里面常用的出现的并发编程中可能会使用到的函数

一.std::thread::hardware_concurrency() 函数

这个函数可以返回硬件线程所支持的最大上下文的数量
头文件 是

 #include < thread>
 std::cout << "thread number   " << std::thread::hardware_concurrency() << std::endl;

二.std::lock_guard函数和std::unqiue_lock函数

这种方式是以RAII的方式对于线程来进行加锁和解锁,函数析够的时候自动析够,保证线程能够正确被解锁
std::lock——可以一次性锁住多个(两个以上)的互斥量,并且没有副作用(死锁风险)。
std::lock_guard 和 std::unique_lock 两者功能基本相同,unique更为灵活,unique中提供了lock,unlock等函数,可以在等待中重新上锁

template <class Mutex> class lock_guard;

在 lock_guard 对象构造时,传入的 Mutex 对象(即它所管理的 Mutex 对象)会被当前线程锁住。在lock_guard 对象被析构时,它所管理的 Mutex 对象会自动解锁,由于不需要程序员手动调用 lock 和 unlock 对 Mutex 进行上锁和解锁操作,因此这也是最简单安全的上锁和解锁方式,尤其是在程序抛出异常后先前已被上锁的 Mutex 对象可以正确进行解锁操作,极大地简化了程序员编写与 Mutex 相关的异常处理代码。
在lock_guard对象的生命周期内,它所管理的对象对一直保持上锁,随着它的析够,对象将会解锁

  • lock_guard 构造函数如下表所示:

    locking (1)	        explicit lock_guard (mutex_type& m); 
    adopting(2)	    lock_guard (mutex_type& m, adopt_lock_t tag);
    copy[deleted](3)	lock_guard (const lock_guard&) = delete;
    

locking 初始化
lock_guard 对象管理 Mutex 对象 m,并在构造时对 m 进行上锁(调用 m.lock())。
adopting初始化
lock_guard 对象管理 Mutex 对象 m,与 locking 初始化(1) 不同的是, Mutex 对象 m 已被当前线程锁住。

void add_to_list(int new_value)
{
    std::lock_guard<std::mutex> guard(some_mutex); //线程安全
    some_list.push_back(new_va
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值