![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++并发编程
文章平均质量分 75
KanShiroi
这个作者很懒,什么都没留下…
展开
-
C++并发编程学习——1.C++并发入门
并发(1)为了性能并发任务并行(task parallelism):将一个单任务分成多个部分并发执行,从而降低整个中运行时间。数据并行(data parllelism):每个线程在不同的数据上执行相同的操作。(2)不使用并发启动线程会存在一些固有的开销,例如内核资源和堆栈空间等。如果线程上运行的任务完成的很快,那么实际运行的时间和启动线程开销的时间相比就原创 2017-11-15 10:24:55 · 417 阅读 · 0 评论 -
C++并发编程学习——2.管理线程
基本线程管理(1)每个C++程序至少有一个线程,它在运行程序时启动,运行着main函数。当线程运行完它的初始函数时,该线程就会退出。(2)启动线程线程是通过构造 std:thread 对象来开始的。void do_some_work(); //函数std::thread my_thread(do_some_work); //thread对象原创 2017-11-15 19:24:22 · 251 阅读 · 0 评论 -
C++并发编程学习——3.在线程间共享数据
线程之间共享数据的问题(1)竞争条件竞争条件指多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间的情形。竞争条件发生在当多个进程或者线程在读写数据时,其最终的的结果依赖于多个进程的指令执行顺序。用互斥元保护共享数据(1)C++中的互斥元C++中,通过构造std::mutex的实例创建互斥元,调用成员函数lock()锁定互斥元,调用成员函数u原创 2017-11-19 20:19:53 · 4910 阅读 · 0 评论 -
C++并发编程学习——4.同步并发操作
等待事件或其他条件(1)条件变量当一个线程正等待另一个线程完成某一项任务,可以使用条件变量。当某个线程已经确定条件得到满足,他就会唤醒正在条件变量上等待的线程继续执行。标准C++库提供了二个条件变量的实现:std::condition_variable 和std::condition_variable_any。这二个实现都在头文件中说明。两者都需要与一个互斥量一起才能工作(原创 2017-11-27 10:54:31 · 571 阅读 · 0 评论