![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++多线程编程
倔强的石头。
csdn账号是很久以前注册,当时为了方便就乱填了用户名。现在想改也改不掉了。。。
展开
-
c++线程池 简洁安全的线程池
#pragma once #include <mutex> #include <condition_variable> #include <functional> #include <queue> #include <thread> class fixed_thread_pool { public: explicit fixed_th...原创 2020-05-09 07:58:46 · 246 阅读 · 0 评论 -
c+11 多线程async、future、packaged_task、promise
1 std::async std::future创建后台任务并返回值 目的:希望线程返回一个结果 std::async是个函数模板,用来启动一个异步任务,启动起来一个异步任务。什么叫“启动一个异步任务”,就是自动创建一个线程并开始执行对应的线程入口函数,它返回一个std::future对象,这个std::future对象里面就含有线程函数返回的结果,我们可以通过调用std::future对象的成员...原创 2019-12-02 23:05:09 · 137 阅读 · 0 评论 -
c++ 多线程 条件变量condition_variable(生产者消费者示例)
#include <iostream> #include <string> #include <thread> #include <list> #include <mutex> #include <condition_variable> class MesProcess { public: void Inmsglis...原创 2019-12-01 20:39:20 · 454 阅读 · 0 评论 -
c++ 多线程unique_lock详解
1 unique_lock取代lock_guard unique_lock是个类模板,工作中,一般lock_guard(推荐使用);lock_guard取代了mutex的lock()和unlock(); unique_lock比lock_guard灵活很多,效率上差一点,内存占用多一点。 2 unique_lock的第二个参数 lock_guard可以带第二个参数 std::lock_guard&...原创 2019-11-28 23:37:06 · 400 阅读 · 0 评论 -
c++ 多线程编程 共享数据的保护即互斥量的用法
1.互斥量(mutex)的基本概念 保护共享数据,操作时,某个线程用代码把共享数据锁住、然后操作数据、最后解锁;其它想操作共享数据的线程必须等待解锁; 互斥量是个类对象,理解成一把锁,多个线程尝试用lock()成员函数来加锁,只有一个线程能锁成功(成功的标志是lock()函数返回);如果没锁成功,那么这个流程卡在lock(),不断的尝试去锁这把锁头; 互斥量使用要小心,保护数据不多也不能少,少了,...原创 2019-11-27 23:02:36 · 236 阅读 · 0 评论 -
c++ 多线程编程 创建线程后的两种方式join和detach以及创建线程的方式
1. 线程的两种状态 一般来说程序开始的入口就是main函数,此时main函数就是主线程,所以自己创建的线程也是从一个函数开始的(初始函数),一旦这个函数运行结束,就表示这个线程结束了。 整个进程是否执行完毕的标志是主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了!那么现在就存在了一个一个问题,自己创建的线程是想在进程结束之前运行结束,还是想在进程结束之后继续运行。这就是join和...原创 2019-11-26 23:45:24 · 584 阅读 · 0 评论 -
c++多线程编程 进程、线程的概念
1. 并发、线程、进程的概念 1.1并发 两个或者多个任务同时发生:一个程序同时执行多个独立的任务; 单核cpu的计算机在某一时刻只能指行一个任务,由操作系统调度,进行多次的任务切换,产生并发的假象,这种切换是要有时间的开销的,比如操作系统要保存切换时的各种状态、执行进度等信息,切换回来时要复原这些信息。 随着硬件的发展,现在出现了多核处理器,在一块芯片上有多个核,能够实现真正的并发执行多个任务。...原创 2019-11-25 23:56:27 · 249 阅读 · 0 评论