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 · 233 阅读 · 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 · 123 阅读 · 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 · 439 阅读 · 0 评论 -
c++ 多线程unique_lock详解
1 unique_lock取代lock_guardunique_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 · 348 阅读 · 0 评论 -
c++ 多线程编程 共享数据的保护即互斥量的用法
1.互斥量(mutex)的基本概念保护共享数据,操作时,某个线程用代码把共享数据锁住、然后操作数据、最后解锁;其它想操作共享数据的线程必须等待解锁;互斥量是个类对象,理解成一把锁,多个线程尝试用lock()成员函数来加锁,只有一个线程能锁成功(成功的标志是lock()函数返回);如果没锁成功,那么这个流程卡在lock(),不断的尝试去锁这把锁头;互斥量使用要小心,保护数据不多也不能少,少了,...原创 2019-11-27 23:02:36 · 223 阅读 · 0 评论 -
c++ 多线程编程 创建线程后的两种方式join和detach以及创建线程的方式
1. 线程的两种状态一般来说程序开始的入口就是main函数,此时main函数就是主线程,所以自己创建的线程也是从一个函数开始的(初始函数),一旦这个函数运行结束,就表示这个线程结束了。整个进程是否执行完毕的标志是主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了!那么现在就存在了一个一个问题,自己创建的线程是想在进程结束之前运行结束,还是想在进程结束之后继续运行。这就是join和...原创 2019-11-26 23:45:24 · 555 阅读 · 0 评论 -
c++多线程编程 进程、线程的概念
1. 并发、线程、进程的概念1.1并发两个或者多个任务同时发生:一个程序同时执行多个独立的任务;单核cpu的计算机在某一时刻只能指行一个任务,由操作系统调度,进行多次的任务切换,产生并发的假象,这种切换是要有时间的开销的,比如操作系统要保存切换时的各种状态、执行进度等信息,切换回来时要复原这些信息。随着硬件的发展,现在出现了多核处理器,在一块芯片上有多个核,能够实现真正的并发执行多个任务。...原创 2019-11-25 23:56:27 · 240 阅读 · 0 评论