C++并发实战编程(C++11)
文章平均质量分 81
早起的虫儿灬
这个作者很懒,什么都没留下…
展开
-
线程管理基础
线程的启动线程在以初始函数(新线程的入口)构造std::thread对象时启动(注意:以无参构造函数构造的std::thread对象并不启动线程) 构造std::thread对象的三种方式使用普通函数构造void do_some_work();std::thread my_thread(do_some_work); 使用函数对象构造class backgro原创 2017-06-15 01:13:20 · 411 阅读 · 0 评论 -
保护共享数据
在多线程环境中,读取操作(不管几个线程同时进行)共享数据不会影响到数据的,但是有一个线程或多个线程意图修改数据是,就需要一些机制来保证所有线程都正常工作。 C++中的互斥量C++标准库中提供了std::mutex来创建互斥量,调用其成员函数lock()可以对互斥量上锁,调用成员函数unlock()进行解锁。但是手动调用这两个成员函数会很麻烦,必须记住每次跳出执行流的时候调用unlock原创 2017-06-22 20:46:10 · 478 阅读 · 0 评论 -
同步并发操作
条件变量有时候线程之间是需要同步的,为了使线程同步,我们的方法有1、设置一个共享标志,一个线程持续检查共享标志,一个线程更新标志,使用一个锁来保护这个标志2、在方法一的基础上使用std::this_thread::sleep_for()让出CPU时间片,以降低不必要的时间损耗 #include //std::this_thread::sleep_for#include //s原创 2017-07-03 23:56:32 · 517 阅读 · 0 评论 -
C++11并发开篇
并发的概念:两个或更多独立的活动同时发生 假并发与真并发:1、任务切换(任务调度):此种方式发生在只有单核心单处理器的老式计算机上。依赖处理器较高的速度不停的在各种任务间切换,以实现”并发”(并不是真正意义上的并发,在任意时刻仅在执行一个任务)2、硬件并发: 此种方式发生在拥有多处理器或多核处理器的计算机上。依靠硬件的支持,能够实现正真意义上的同时执行多个任务原创 2017-06-14 01:44:26 · 258 阅读 · 0 评论 -
C++并发编程实战第6章问题
C++并发编程实战第6章,代码清单6.4队列实现——单线程版template<typename T>class queue{private: struct node { T data; std::unique_ptr<node> next; node(T data_): data(std::move(data_)) {...原创 2018-04-07 20:12:28 · 388 阅读 · 0 评论