DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2023年3月16日

摘要: 【并发编程二十一】c++20协程(co_yield、co_return、co_await ) 一、协程分类 1、控制机制划分 2、有栈(stackfull)/无栈(stackless)划分 二、c++20协程 三、co_yield 1、demo 2、相关知识点介绍 四、co_return 五、co_ 阅读全文
posted @ 2023-03-16 17:06 DoubleLi 阅读(3881) 评论(1) 推荐(0)

摘要: 【并发编程十七】c++实现一个线程池 一、线程池原理 二、实现重点 三、个人理解 四、实验 简介:大多数系统上,若因某些任务可以与其他任务并行处理,就分别给他们配备专属的线程,则这种做法不切实际。但是只要有可能,我们还是想充分利用可调配的并发算力。线程池正好可以帮助我们达到目的:讲可同时执行的任务都 阅读全文
posted @ 2023-03-16 17:01 DoubleLi 阅读(1636) 评论(0) 推荐(0)

摘要: 【并发编程十九】芊程(fiber) 一、前言 二、芊程(fiber) 1、线程中使用芊程 2、获取当前芊程数据 3、从芊程切回线程 4、创建新的芊程 5、删除芊程对象 6、在不同芊程间切换 7、芊程局部存储 三、demo 四、芊程和协程 简介: 我们本篇先讲解下芊程,下一篇再介绍协程,因为有了芊程的 阅读全文
posted @ 2023-03-16 16:58 DoubleLi 阅读(214) 评论(0) 推荐(0)

摘要: 【并发编程十八】线程局部存储(TLS) 一、定义 二、线程局部存储的实现 1、windows系统 2、linux系统 3、c++11 三、windows系统 1、线程局部存储是分块的(TLS_MINIMUM_AVAILABLE) 2、获得索引 3、通过索引:存储数据、取出数据 4、释放索引和内存块 阅读全文
posted @ 2023-03-16 16:56 DoubleLi 阅读(1040) 评论(0) 推荐(0)

摘要: 【并发编程十六】无锁数据结构(2)——无锁队列 一、简介 二、原理图 三、代码:实现 三、代码:demo 四、其他知识点 1、delete 关键字 2、delete 的扩展 上一节我们讲解了无锁栈容器,这节我们讲解下无锁队列,如果大家还有基础知识不了解,建议先看下我的上两篇原子操作和无锁栈容器两篇文 阅读全文
posted @ 2023-03-16 16:52 DoubleLi 阅读(610) 评论(0) 推荐(0)

摘要: 【并发编程二十】协程(coroutine) 一、线程的缺点 二、协程 三、优点 四、个人理解 五、协程库 1、window系统 2、unix系统(包括linux的各个版本) 2.1、makecontext 2.2、swapcontext 2.3、setcontext 3、第三方库 3.1、Boost 阅读全文
posted @ 2023-03-16 16:49 DoubleLi 阅读(577) 评论(0) 推荐(0)

摘要: 【并发编程十五】无锁数据结构——无锁栈 一、无锁数据结构体的优点和缺点 1、优点 2、缺点 二、无锁数据结构分类 三、无锁栈容器 1、简介 2、无锁栈原理图 3、添加节点(push) 4、添加数据(添加节点demo) 5、弹出数据 6、弹出数据demo 7、无锁栈和智能指针 8、无锁栈内存泄露的解决 阅读全文
posted @ 2023-03-16 16:44 DoubleLi 阅读(521) 评论(2) 推荐(0)

摘要: 【并发编程十三】c++原子操作(1) 一、改动序列 1、改动序列 2、预测执行 二、原子操作及其类别 1、原子操作 2、非原子操作 3、原子类型 三、标准原子类型 1、标准原子类型的两种实现方式 2、原子操作的用途 3、原子操作的宏 四、操作std:atomic_flag 1、简介 2、使用说明 3 阅读全文
posted @ 2023-03-16 16:40 DoubleLi 阅读(586) 评论(0) 推荐(0)

摘要: 【并发编程十四】c++原子操作(2)——实现自旋锁 一、自旋锁简介 二、使用自旋锁 三、不使用自旋锁 四、分析 简介在介绍完原子操作,我们这篇使用c++提供的原子操作,实现一个自旋锁,并加以利用。 原子操作参见【并发编程十三】c++原子操作 一、自旋锁简介 “自旋”可以理解为“自我旋转”,这里的“旋 阅读全文
posted @ 2023-03-16 16:36 DoubleLi 阅读(449) 评论(0) 推荐(0)

摘要: 【并发编程九】c++线程同步——互斥(mutex) 一、互斥 1、mutex 1.1、mutex 1.2、 lock_guard 1.3、 RAII 2、std::recursive_mutex 3、std::shared_mutex、std::shared_lock、std::unique_loc 阅读全文
posted @ 2023-03-16 16:33 DoubleLi 阅读(1030) 评论(0) 推荐(0)

摘要: 【并发编程十】c++线程同步——条件变量(condition_variable) 一、互斥 二、条件变量 1、为何要引入条件变量? 2、不使用条件变量 3、使用条件变量 3.1、互斥锁有什么问题? 3.2、条件变量 3.3、条件变量成员函数 3.4、demo 3.4、总结 三、future 四、信号 阅读全文
posted @ 2023-03-16 16:26 DoubleLi 阅读(633) 评论(0) 推荐(0)

摘要: 【并发编程八】线程和线程同步 一、线程 二、线程的实现 1、linux系统 2、windows系统 3、c++11 3.1、线程的操作 3.2、管理当前线程的函数 三、线程同步 1、linux系统 1.1、互斥体(mutual exclusive、Mutex) 1.2、信号量(semapphore) 阅读全文
posted @ 2023-03-16 16:23 DoubleLi 阅读(159) 评论(0) 推荐(0)

摘要: 【并发编程七】进程通信——套接字(socket)_80行代码实现一个聊天软件 一、简介 二、相关知识介绍 1、winsock1.h、winsock2.h 2、如何使用ws2_32.dll 3、WSAStartup() 函数 4、socket 5、bind 5、listen 6、accept 7、co 阅读全文
posted @ 2023-03-16 16:18 DoubleLi 阅读(692) 评论(0) 推荐(0)

摘要: 【并发编程四】c++进程通信——共享内存(shared memmory) 一、共享内存(shared memmory) 二、共享内存的过程 1、processA 写入共享内存 2、processB 读取共享内存 三、代码demo 1、processA demo 2、processB demo 四、输 阅读全文
posted @ 2023-03-16 16:14 DoubleLi 阅读(6766) 评论(0) 推荐(0)

摘要: windows进程通信和Linux进程通信 一、进程通信(IPC) 二、Linux进程通信 1、管道(pipe) 1.1、匿名管道 1.1、命名管道(有名管道) 2、消息队列(message queue) 3、共享内存(shared memmory) 4、信号量(Semaphore) 5、信号(si 阅读全文
posted @ 2023-03-16 16:11 DoubleLi 阅读(515) 评论(0) 推荐(0)

摘要: 【并发编程三】C++实现通信——管道(pipe) 一、管道(pipe) 二、匿名管道 1、简介 2、父子进程:匿名管道的通信过程? 3、相关函数 3.1、创建管道CreatePipe 3.2、写入管道WriteFile 3.3、读取管道ReadFile 3.4、获取句柄GetStdHandle 4、 阅读全文
posted @ 2023-03-16 16:09 DoubleLi 阅读(4478) 评论(0) 推荐(0)

摘要: 【并发编程二】c++创建子进程CreateProcess() 一、创建子进程 二、demo 三、构建、编译、运行 四、相关知识介绍 1、CreateProcess 参数介绍 1.1、lpApplicationName 1.2、lpCommandLine 1.3、lpProcessAttributes 阅读全文
posted @ 2023-03-16 15:57 DoubleLi 阅读(2613) 评论(0) 推荐(0)

摘要: 【并发编程六】c++进程通信——信号量(semaphore) 一、概述 二、信号量 三、原理 四、过程 1、进程A过程 2、进程B过程 五、demo 1、进程A 2、进程B 六、输出 七、windows api介绍 1. 创建信号量 CreateSemaphore() 2. 打开信号量 OpenSe 阅读全文
posted @ 2023-03-16 15:45 DoubleLi 阅读(3101) 评论(0) 推荐(0)

摘要: 【并发编程十二】c++20线程同步——信号量(semaphore) 一、互斥 二、条件变量 三、future 四、信号量 1、信号量原理 2、c++ 20 信号量 3、demo 简介:本篇文章,是线程同步的最后一篇。我们详细的介绍下c++标准库提供的线程同步方法——信号量(semaphore)。 一 阅读全文
posted @ 2023-03-16 15:41 DoubleLi 阅读(1629) 评论(0) 推荐(0)

摘要: 【并发编程十一】c++线程同步——future 一、互斥 二、条件变量 三、future 1、promise 1.1、子线程设值,主线程获取 1.2、主线程设置值,子线程获取 2、async 2.1、不开新线程的async 2.2、开新线程的async 3、packaged_task 3.1、不使用 阅读全文
posted @ 2023-03-16 15:39 DoubleLi 阅读(318) 评论(0) 推荐(0)