![](https://img-blog.csdnimg.cn/20191130095641615.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++并发与多线程
WJsuperrunner
学无止境
展开
-
C++并发与多线程编程之condition_variable、wait、notify_one
1 std::condition_variablestd::condition-variable实际上是一个类,是一个和条件相关的一个类,说白了就是等待一个条件达成。这个类是需要和互斥量来配合工作,用的时候我们要生成这个类的对象。2 std::condition_variable::wait()wait()会去检查这些条件(第二参数,通过调用所提供的lambda函数),当条件满足(la...原创 2019-06-05 14:31:17 · 1955 阅读 · 0 评论 -
C++并发与多线程编程之std::async、std::future、std::package_task、std::promise
1 std::async, std::future创建后台任务并返回值 std::sync是个函数模板,用来启动一个异步任务,启动起来一个异步任务之后,他返回一个std: :future对象, std: :future是一个类模板。什么叫“启动一个异步任务”,就是自动创建一个线程并开始执行对应的线程入口函数,它返回一个std::future对象, 这个std:: future对象...原创 2019-06-05 14:53:28 · 588 阅读 · 0 评论 -
C++并发与多线程编程之单例模式、std::call_once()
1 单例模式#include <iostream>#include <thread>#include <mutex>using namespace std;std::mutex mtx;class Singleton{private: Singleton(){}; static Singleton *myInstance;...原创 2019-06-05 11:00:49 · 407 阅读 · 0 评论 -
C++并发与多线程编程之unique_lock
1 unique_lock取代lock_guard unique_lock是一个类模板,比lock_guard灵活,但是占用内存大、耗时。2 unique_lock第二个参数 2.1 std::adopt_lock lock guard可以带第二个参数,std::adopt_lock,起标记作用。表示这个互斥量已经被lock(你必须要把互...原创 2019-06-04 19:58:07 · 219 阅读 · 0 评论 -
C++并发与多线程编程之互斥量、死锁及解决办法
1 互斥量(mutex)互斤量是个类对象,理解成一把锁,多个线程尝试用lock()成员来加锁这把锁头,只有一个线程能锁定成功(成的标志是lock()函数返回),加果没锁成功,那么流程卡在lcok()这里不断的尝试去锁这把锁头。互斥量使用要小心,保护封据不多也不少,少了,没达到保护效果,多了,影响效率。2 互斥量的用法2.1 lock()、unlock()步骤:先lock(),...原创 2019-06-04 18:52:00 · 774 阅读 · 0 评论 -
C++并发与多线程编程之join(),detach()
join0:加入/汇合,说白了就是阻塞,阻塞主线程,让主线程(main)等待子线程执行完毕,然后子线程和主线程汇合 ,然后主线程再往下走。如果主线程执行完毕了,但子线程没执行完毕,这种程序员是不合格的,写出来的程序也是不稳定的,一个书写良好的程序,应该是主线程等待子线程执行完毕后,自己才能最终退出。 detached():分离,也就是主线程不和子线程汇合了,你主线程执行你的,我子线程执行我的,你...原创 2019-06-04 16:35:22 · 570 阅读 · 2 评论