![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
衡扫天下
这个作者很懒,什么都没留下…
展开
-
线程间同步经典问题——哲学家就餐、消费者生产者、睡眠的理发师、读者写者
线程间同步经典问题——哲学家就餐、消费者生产者、睡眠的理发师、读者写者哲学家就餐消费者生产者睡眠的理发师读者写者哲学家就餐https://github.com/kfcyh/threads/tree/master/philosopher消费者生产者https://github.com/kfcyh/threads/tree/master/producer_consumer睡眠的理发师https://github.com/kfcyh/threads/tree/master/barber读者写者ht原创 2020-05-24 16:37:07 · 387 阅读 · 0 评论 -
c++多线程之condition_variable
c++多线程之同步实现——std::mutex类线程同步简介互斥锁mutex线程同步简介之前讲过使用thread创建线程,实际中经常出现几个线程共享数据互相合作完成某项工作,也就是说有若干个线程对同一块数据进行读写,这时候会出现几种情况。几个线程读取同一块数据,不对数据进行写操作:这时几个线程之间可以同时访问该数据,不需要进行互斥。一个或若干个线程对数据进行读操作,一个或若干个线程对数据进行写操作:一块数据是不允许同时进行读和写操作的,因为这样操作的结果是不可预见的,比如线程t1对变量a进行读操作原创 2020-05-24 15:26:09 · 1743 阅读 · 0 评论 -
c++多线程之模版类lock_guard和unique_lock
c++多线程之模版类lock_guard和unique_lock简介lock_guardunique_lock简介之前讲解互斥锁mutex中提到,mutex的上锁lock()和解锁unlock()操作必须成对使用,一旦我们在一个线程中获取一个mutex锁后忘记在线程结束时解锁,那么这个锁将一值处于上锁状态,导致其他需要获取这个锁的线程一直处于阻塞状态从而饿死。为了避免大家犯这种低级错误,也为了更好更灵活的使用互斥锁,c++退出了模板类lock_guard和unique_lock。下面给大家具体讲解一下。原创 2020-05-23 16:47:56 · 353 阅读 · 0 评论 -
c++多线程之互斥锁mutex
c++多线程之互斥锁mutex互斥锁mutex简介调用lock()调用try_lock()互斥锁mutex简介mutex只有两种状态,即上锁( lock )和解锁( unlock ),它具有原子性和唯一性,简单解释就是:原子性:一个互斥锁同一时间只有一个线程可以对其进行上锁。唯一性:当一把互斥锁被上锁后,在它被解锁前不能被其他线程锁定。下面我们具体看一下mutex类。我们只需掌握它三个接口即可。void lock()上锁,若此时锁被其他线程拥有则阻塞直到锁被释放void原创 2020-05-22 10:47:50 · 1562 阅读 · 0 评论 -
c++多线程之std::thread类的使用
c++多线程之std::thread类的使用构造函数c++中封装了用于创建线程的类thread,它需要包含头文件include<thread>include <thread>include<thread>,我们来看一下thread中的几个重要接口。构造函数1.默认构造函数std::thread t()构造空的线程对象2.初始化构造函数std::thread t(&f,arg)构造执行函数f的线程对象,arg代表函数f的参数列表原创 2020-05-18 18:06:57 · 865 阅读 · 0 评论