c++11
鱼裸忧伤
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[c++11]多线程编程(一)——初识
[c++11]多线程编程(一)——初识 转自:https://www.jianshu.com/p/5d273e4e3cbb 什么是并发 并发在生活中随处可见,边走路边说话,边听歌边写代码。计算机术语中的"并发",指的是在单个系统里同时执行多个独立的活动,而不是顺序的一个接一 个的执行。对于单核CPU来说,在某个时刻只可能处理一个任务,但它却不是完全执行完一个任务再执行一个下一任务,而是一直在...转载 2019-01-18 14:51:59 · 266 阅读 · 0 评论 -
[c++11]多线程编程(二)——理解线程类的构造函数
[c++11]多线程编程(二)——理解线程类的构造函数 转自:https://www.jianshu.com/p/109df8a7e627 构造函数的参数 std::thread类的构造函数是使用可变参数模板实现的,也就是说,可以传递任意个参数,第一个参数是线程的入口函数,而后面的若干个参数是该函数的参数。 第一参数的类型并不是c语言中的函数指针(c语言传递函数都是使用函数指针),在c++...转载 2019-01-18 15:27:50 · 389 阅读 · 0 评论 -
[c++11]多线程编程(三)——竞争条件与互斥锁
[c++11]多线程编程(三)——竞争条件与互斥锁 转自:https://www.jianshu.com/p/4a2578dd9b5d 竞争条件 并发代码中最常见的错误之一就是竞争条件(race condition)。而其中最常见的就是数据竞争(data race),从整体上来看,所有线程之间共享数据的问题,都是修改数据导致的,如果所有的共享数据都是只读的,就不会发生问题。但是这是不可能的,...转载 2019-01-18 20:02:00 · 740 阅读 · 0 评论 -
[c++11]多线程编程(四)——死锁(Dead Lock)
[c++11]多线程编程(四)——死锁(Dead Lock) 转自:https://www.jianshu.com/p/c01e992a3d9d 死锁 如果你将某个mutex上锁了,却一直不释放,另一个线程访问该锁保护的资源的时候,就会发生死锁,这种情况下使用lock_guard可以保证析构的时候能够释放锁,然而,当一个操作需要使用两个互斥元的时候,仅仅使用lock_guard并不能保证不会...转载 2019-01-18 20:45:41 · 460 阅读 · 2 评论 -
[c++11]多线程编程(五)——unique_lock
[c++11]多线程编程(五)——unique_lock 转自:https://www.jianshu.com/p/34d219380d90 互斥锁保证了线程间的同步,但是却将并行操作变成了串行操作,这对性能有很大的影响,所以我们要尽可能的减小锁定的区域,也就是使用细粒度锁。 这一点lock_guard做的不好,不够灵活,lock_guard只能保证在析构的时候执行解锁操作,lock_gua...转载 2019-01-18 20:55:30 · 346 阅读 · 0 评论 -
[c++11]多线程编程(六)——条件变量(Condition Variable)
转自:https://www.jianshu.com/p/c1dfa1d40f53 互斥锁std::mutex是一种最常见的线程间同步的手段,但是在有些情况下不太高效。 假设想实现一个简单的消费者生产者模型,一个线程往队列中放入数据,一个线程往队列中取数据,取数据前需要判断一下队列中确实有数据,由于这个队列是线程间共享的,所以,需要使用互斥锁进行保护,一个线程在往队列添加数据的时候,另一个线程...转载 2019-01-30 17:25:30 · 412 阅读 · 0 评论
分享