多线程c++实现
我叫龙傲天
相信微末的力量
展开
-
C++多线程(6)之条件变量(std::condition_variable)
条件变量(std::condition_variable)这是c++11提供的一个类,用于多线程之间的通信。条件变量顾名思义就是根据不同条件而变化的量。应用场景这里举一个例子:有一个线程要求必须达到某种状态才能继续执行,否则将卡死在这里。在这种情况下我们有两种方案,第一种方案就是,在这个线程中不断去检测这个状态,直至符合条件。第二种方案就是,这个线程卡在这里不工作,当条件成立时,去通知...原创 2019-10-21 09:22:22 · 601 阅读 · 0 评论 -
多线程C++实现(1)之我的第一个多线程程序(join()、detach()、joinable())
建立多线程的三种方法:普通函数 类对象(2.1类中重载小括号()运算符 , 2.2普通的成员函数) lambda上代码:#include <iostream>#include <thread>//我们通过thread来建立多线程using namespace std;void my_function() { cout << ...原创 2019-09-02 16:39:28 · 729 阅读 · 0 评论 -
多线程c++实现(2)之向子线程中传数据(std::this_thread::get_id() 、 std::ref())
上一个博客https://blog.csdn.net/shaochuang1/article/details/100302439介绍了创建多线程的几种方法,但是都是没有参数的那种,这篇博客我们来向子线程中传入参数。#include <iostream>#include <thread>using namespace std;void Myprint(int...原创 2019-09-09 17:43:25 · 1847 阅读 · 1 评论 -
c++多线程(3)之互斥量(mutex)、锁(lock,unlock,lock_guard)的应用
多线程中,多个线程对共享的数据进行访问,应该是最常见的应用。如果多个线程都只是对共享数据进行读操作,还不会有问题,但是如果有的线程读数据,有的线程写数据,这时候就会出现问题。比如A线程写数据,但是写的这个过程进行到一半,B线程就去读,这个时候程序就会崩溃。这个时候就需要互斥量的出场啦!mutex:mutex互斥量是一个类,这个类有有一个lock()方法,和一个unlock()方法。如果...原创 2019-09-18 20:40:16 · 7895 阅读 · 3 评论 -
C++多线程(4)之死锁以及解决方法
什么叫作死锁:线程1需要先锁锁A,再锁锁B,才可以执行相应的保护代码。线程2需要先锁锁B,再锁锁A,才可以运行相应的保护代码。如果出现这种情况:线程1锁住了锁A,而线程2锁住了锁B,这个时候两个程序都在等待对方解锁。这就出现了死锁现象。代码:#include <iostream>#include <thread>#include <mutex>...原创 2019-09-18 21:20:49 · 2043 阅读 · 0 评论 -
c++多线程(5)之unique_lock的使用
unique_lock是一个类模板,下面简单介绍它的使用方式。如果只用一个参数,unique_lock与lock_gard的使用方法一样:可以参考我的这篇博客:https://blog.csdn.net/shaochuang1/article/details/100991407代码:#include <iostream>#include <thread>...原创 2019-09-24 21:24:54 · 1179 阅读 · 0 评论