
c++thread
文章平均质量分 91
AczQc
这个作者很懒,什么都没留下…
展开
-
C++11多线程(八) 自定义锁
C++11多线程(八) 自定义锁C++11相关知识介绍差不多以后,我们来看看一些利用c++11特性实现的自定义锁。层次锁正如名字所说,层次锁要求我们在加锁解锁时进行判断,也就是具有先后顺序,如果有低优先级的锁尝试在高优先级锁被上锁之后上锁就会报错。#pragma once//层次锁头文件#include <mutex>#include<iostream>class hierarchical_mutex{public: hierarchical_mutex(i原创 2021-08-06 13:36:42 · 545 阅读 · 0 评论 -
C++11多线程(七) C++11对多线程的一些补充
文章目录C++11多线程(七) C++11对多线程的一些补充thread_local全局变量局部变量类对象std::this_thread::yield();std::once_flag和std::call_onceC++11多线程(七) C++11对多线程的一些补充thread_localthread_local是一个新引入的关键字,主要用于声明一个变量的作用域。thread_local int x = 0;//这样我们就声明了一个int变量的作用域thread_local代表的作用域是从一原创 2021-08-02 16:27:02 · 317 阅读 · 0 评论 -
C++11多线程(六) 异步任务浅析
文章目录C++11多线程(六)异步函数浅解std::futurefuture常用函数std::future::wait();std::future::get()std::future::valid()std::future::wait_for() , std::future::wait_until()std::future::share()std::shared_future<>创建有效future的三个方法std::asyncasync和thread的区别std::packaged_taskp原创 2021-07-07 20:04:33 · 1647 阅读 · 0 评论 -
C++11多线程(五)原子操作简单使用
文章目录C++11多线程(五)原子操作概念std::atomicatomic的方法快速创建原子变量C++11多线程(五)原子操作概念什么是原子?在计算机中我们可以将其理解为“原子是无法分割的最小个体”。什么是原子操作?通过操作原子来实现线程对资源的安全访问,听起来和锁是差不多的,但原子操作更接近于底层,所有效率会更好。互斥锁是一种对象,使你可以执行一系列互斥操作。而原子操作是互斥的单个操作,这意味着没有其他线程可以打断它。原子操作在运行过程中是不会被打断的,这点需要我们记住,原子操作只有完成完原创 2021-06-30 17:25:06 · 3416 阅读 · 1 评论 -
C++11多线程(四) 条件变量
文章目录C++11多线程(四) 条件变量condition_variablecondition_variable::wait()wait_until,wait_fornotify_one,notify_allcondition_variable_anyC++11多线程(四) 条件变量condition_variablecondition_variable是一个类,由字面意思可以很清楚地看出它与条件相关。也就是条件变量。condition_variable没有特别的构造方法,所以我们直接声明就好了。原创 2021-06-28 18:28:33 · 2067 阅读 · 0 评论 -
C++11多线程(三) lock_guard unique_lock
文章目录C++11多线程(三) lock_guard unique_lock导读Lock_guard示例代码lock_guard<>的第二个参数unique_lockunique_lock源码浅析(部分)unique_lock的第二个参数adopt_lockdefer_locktry_to_lockunique_lock常用函数以及一些补充死锁死锁的概念死锁产生的4个必要条件C++11中防止死锁的方法C++11多线程(三) lock_guard unique_lock导读上一节讲解了四种锁原创 2021-06-28 00:35:32 · 1915 阅读 · 1 评论 -
C++11多线程(二) 互斥量(锁)——四种互斥量
文章目录C++11多线程(二) 四种锁的应用mutex(互斥量)lock(),unlock()封装应用timed_mutex(时间互斥锁)timed_mutex常用方法try_lock_for():try_lock_until():recursive_mutex(递归锁)recursive_timed_mutex补充C++11多线程(二) 四种锁的应用mutex(互斥量)mutex,也就是最简单的互斥锁。使用lock(),unlock()函数来进行加锁解锁操作。还记得在C++11多线程(一)中我提到原创 2021-06-26 19:30:40 · 852 阅读 · 0 评论 -
C++11多线程(一) 创建线程
写在前面,本文是本人学习过程中类似于笔记的记录,如有疑问或错误可在评论区指出。请勿转载,谢谢观看。文章目录C++11多线程(一) 简单使用创建线程创建线程的其他方法一、函数对象二、匿名函数三、成员变量四、补充C++11多线程(一) 简单使用创建线程最简单的方法如下:#include<iostream>#include<thread>using namespace std;void f() {// cout << "正在执行 id:" <<原创 2021-06-26 11:00:51 · 1923 阅读 · 7 评论