C++ 11 多线程笔记

GoldenDB 兼容模式冲突场景解析:MySQL 连接模式 vs Oracle 语法兼容 阅读详情

这是一个课程的学习笔记

一、并发、进程、线程的基本概念

并发:两个或多个任务同时发生
进程:执行中的可执行程序;
线程:有时被称为轻量进程,是程序执行流的最小单元。
并发、进程、线程

二、c++11标准线程库创建子线程的方法

首先包含头文件#inlcude <thread>;,命名空间using namespace std;

  1. 通过创建std::thread类对象创建新线程
...

std::thread thread_1(thread_1_func);
//创建了一个std::thread类对象thread_1,参数thread_1_func为一个可调用对象
//作用:新建一个子线程,且子线程从此处开始执行
....
thread_1.join();//等待子线程执行结束
//thread_1.detach();//把子线程从主线程主分离出去
...

代码说明:可调用对象可以简单理解为函数,子线程执行的代码即为该函数内的代码。

  1. 同时创建和等待多种线程
std::vector<std::thread> myhtreads;
for ( int i = 0 ; i < 10 ; i++ )
{
	mythreads.push_back(thread(func,i));
}
for(auto iter=mythreads.begin();iter!=mythreads.end();++iter)
{
	iter->join();
}

三、数据共享问题、互斥量概念用法、死锁;

unique_lock()

设计模式、单例设计模式、call_once()

condition_variable、wait、notify_one、notify_all

课时10async、future、packaged_task、promise107:46
课时11future其他成员函数、shared_future、atomic97:48
课时12std::atomic续谈、std::async深入谈64:10
课时13windows临界区、其他各种mutex互斥量71:40

条件变量
原子操作
各种成员函数

单核cpu实现多线程的方式:由多操作系统调度,进行多次任务切换;

https://study.163.com/course/courseMain.htm?courseId=1006067356
https://baike.baidu.com/item/线程/103101?fr=aladdin
https://www.cnblogs.com/youyoui/p/8933006.html

仿真学习系列(三十):Sigrity设计文件(Altium Designer和Allegro)导入 很多刚接触 Sigrity 的工程师都会产生疑问:Sigrity 功能这么多,是不是门槛很高?我能学得会吗? 其实,Sigrity 的核心并不在“操作难”,而是在“理解仿真背后的机理”。一旦掌握基本流程,你会发现它并没有想象中那么复杂,反而能大大提升你的高速设计能力。本节内容,就是从最简单的一步开始 —— 把你的设计文件正确导入 Sigrity。 阅读详情

相关推荐

华为昇腾310P3+deepseek蒸馏版性能调优:FP16精度优化全记录

本文详细介绍了在华为昇腾310P3硬件环境下优化DeepSeek蒸馏版模型FP16精度的关键技术路径。通过分层量化策略、内存分配优化和并行计算配置,显著提升模型推理性能,实现83%的并发处理能力提升,同时保持98.7%的原始模型准确率。

weixin_29074409的博客 346

C ++ _多线程笔记

#include<iostream>#include <thread>//创建线程需要添加的头文件using namespace std;/*thread join(阻塞:主等子) detach(主子分离) */int main (){ return 0;}第三节:线程传参详解,detach()大坑,成员函数做线程函数 (1)传递临时对象...

weixin_30379531的博客 138

基于verilog的16QAM调制

思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2->4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差...

weixin_30725467的博客 2929

C++11并发与多线程笔记

在你的代码中,使用std::ref是必要的,因为你需要在新线程中引用并修改myprom,而不是创建它的一个拷贝或将其所有权转移。因此,std::ref可以确保myprom作为引用被传递,而mythread中的修改能够影响到main函数中的myprom。一、补充一些知识点1.1 虚假唤醒:notify_one或者notify_all唤醒wait()后,实际有些线程可能不满足唤醒的条件,就会造成虚假唤醒,可以在wait中再次进行判断解决虚假唤醒。

m0_72169557的博客 979

OKCC呼叫中心部署实战指南:从零搭建高效外呼系统

本文提供OKCC呼叫中心系统的完整部署实战指南,从服务器选型、操作系统准备到详细安装步骤和性能优化,帮助企业从零搭建高效外呼系统。重点介绍FreeSWITCH核心组件的安装配置技巧,以及常见问题排查方法,助力企业提升客户服务效率。

weixin_29275257的博客 163

静态时序分析Static Timing Analysis1——STA概述、标准工艺库、时钟、IO约束的建立

简要介绍STA和标准工艺库内容,对时钟,IO等进行约束的指令介绍,PVT

qq_42135020的博客 7537

仓鼠cpp复习笔记:多线程入门(2) C++11的三种互斥锁

C++多线程教学,涉及线程创造、互斥锁、数据竞争等内容讲解,配有可实现代码与示范

weixin_60849947的博客 672

告别轮询!用STM32CubeMX给STM32F030配置ADC多通道+DMA,实测代码分享

本文详细介绍了如何使用STM32CubeMX为STM32F030配置ADC多通道采集与DMA传输,显著提升采集效率。通过实测对比轮询与DMA模式的性能差异,提供完整的代码实现和优化技巧,帮助开发者快速掌握这一高效采集方案。

weixin_42570296的博客 410

01C++11 多线程以及解释笔记

C++ 11 多线程学习,主要争对C++11 语法解释。

qq_43511740的博客 230

群晖Git Server权限配置全攻略:如何让普通用户(非admin)也能安全提交代码?

本文详细解析了群晖Git Server权限配置方案,特别针对普通用户(非admin)安全提交代码的需求。通过SSH服务配置、精细化用户权限管理及仓库创建自动化脚本,实现在DS218+等群晖NAS设备上的高效代码协作,同时确保系统安全。

weixin_42528780的博客 463

最新虚拟串口 Virtual Serial Port Driver V11.0.1068 已经汉化

Virtual Serial Port Driver 11.0.1047 是一款功能强大的虚拟串口驱动程序,专为需要在开发和测试环境中模拟物理串口连接的用户设计。该版本于2023年4月5日发布,主要修复了在导入无效的COM端口捆绑设置时导致的崩溃问题,并优化了软件的自动更新功能。通过使用Virtual Serial Port Driver,用户可以在不依赖物理硬件的情况下,轻松创建和管理虚拟串口,极大地提高了开发和测试的效率。

中游鱼的博客 3万+

C++11多线程学习笔记

C++11多线程学习笔记1. 引言2. 线程的启动、结束,创建线程3. 线程传参,detach()坑,成员函数做线程函数4. 创建多个线程、数据共享问题分析5. 互斥量,死锁6. unique_lock7. 单例设计模式数据共享分析、解决8. condition_variable、wait、notify_one、notify_all9. async、future、packaged_task、pro...

wuerfang的博客 985

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时,将显示蓝色诊断屏幕(BSOD)。 会看到类似于以下内容的错误: VMware Workstation和Device / Credential Guard不兼容。禁用Device / Credential Guard后,可以运行VMwar...

Hern(宋兆恒) 39万+

C++ 11多线程学习笔记

一、多线程小实例 #include <thread> #include <iostream> void foo() { std::cout << "Hello world" << std::endl; } int main() { std::thread thread(foo); // 启动线程foo thread.jo...

zzh_AI的博客 279

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++11并发与多线程笔记1

并发,线程,进程要求必须掌握1.1 并发1.2 可执行程序1.3 进程1.4 线程①②③必须使用多线程的案例c)有的时候,线程太多的时候效率反而会降低。1.5 学习心得a)通过多个进程实现并发b)在单独的进程中,写代码创建除了主线程之外的其他线程来实现并发;自己写代码来创建除了主线程之外的其他线程。

m0_61703832的博客 160

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

笔记:C++11多线程

C++11多线程编程相关的一些知识点: 一、非模板线程类:thread 1)默执行、显构造、变长构造可带参 2)右拷贝(thread(&&))、右赋值(thread=(&&))、还有交换(swap)和id(get_id) 3)防崩join、detach 二、非模板互斥量:mutex(继承自_Mutex_base) 1)一锁(lock)一解(unlock)一尝试(try_lock) 2)互斥(mutex)单(次上)锁,递归(recursive_mutex)(同线程)多锁(类似引

weixin_46691179的博客 202

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C++11多线程笔记一(多线程简介)

每个线程可以独立的运行不同的指令序列,但是线程不独立的拥有资源,依赖于创建它的进程而存在。即同一进程中的多个线程共享相同的地址空间,可以访问进程中的大部分数据,指针和引用可以在线程间进行传递。由于缺少操作系统提供的保护机制,在多线程共享数据及通信时,需要保证对共享数据段的操作是以预想的操作顺序进行的,并且要极力的避免。总之,并发是指多个任务之间的逻辑上的同时执行,而并行是指多个任务之间的物理上的同时执行。是依赖于C++语言的,是 C++ 标准库中提供的用于创建和管理线程的类,使用。编写的程序是跨平台的。

nanjono的博客 152

C++11 多线程异步操作详解笔记

本文详细阐述 C++11 多线程异步操作的核心组件,包括std::future、std::promise、std::packaged_task和std::async。先介绍异步操作基础,对比同步与异步的区别,说明这些组件出现的必要性。接着分述各组件特性、函数及用法,搭配可运行代码示例。最后通过综合示例展示组件协同工作,体现它们在多线程编程中高效安全管理异步任务结果的作用,是现代 C++ 并发编程的重要工具。

2303_79953471的博客 928

仓鼠cpp复习笔记:多线程入门(1)

这个系列是我发现自己编程能力比较不足,所以想写blog来促进自己复习希望能帮助到大家(先少误导)有问题可以直接在评论区指出。

weixin_60849947的博客 1959

C++11 多线程编程笔记

目标:并发执行(性能) + 正确同步(安全) + 生命周期可控(可维护)。

apple_68404559的博客 419

【C++11并发与多线程笔记(6)】

C++11并发与多线程笔记(5)future其它成员函数、shared_future、atomicstd::future的其它成员函数shared_future原子操作std::atomic原子操作概念引出范例基本的std::atomic用法范例心得 future其它成员函数、shared_future、atomic std::future的其它成员函数 int mythread(int temp) { cout << temp << endl; cout << "m

qq_41855185的博客 502

C++11多线程编程(笔记)

C++11 标准库提供std::tread类用于多线程编程。 线程的创建和阻塞 线程的三种创建方式 函数名或函数指针创建线程 函数对象(仿函数)创建线程 lambda表达式创建线程。 阻塞主线程:join()和detach()函数 两者区别:子线程对象调用join()函数,主线程会被阻塞,直到子线程执行完成,主线程才能接着执行。子线程对象调用detach()函数后,执行的子线程从线程对象中分离...

XindaBlack的博客 858

c++11多线程课堂笔记

上课地址:https://www.bilibili.com/video/BV1Yb411L7ak?p=2 第二课:1.进程就是一个可执行程序运行起来。每个进程都有一个主线程,这个主线程是唯一的。主线程和进程是唇齿相依的关系。线程可以理解为执行代码的道路。可以通过写代码创建其他线程。 2.每个线程都要独立的堆栈(1M),切换线程需要代价。主线程是自动启动 3.进程间通信:相同电脑 管道,文件,消息队列,共享内存 不同电脑:socket 4.一个进程中所有线程共线地址空间(内存)。全局变量,指针,引用都可以在进

If_life的博客 333

《c++新经典》C++11并发与多线程笔记(1)

一 并发基本概念及实现,进程、线程基本概念 1、并发、进程、线程的基本概念和综述 并发,线程,进程要求必须掌握 1.1 并发 两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务; 以往计算机,单核cpu(中央处理器):某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换”。并发的假象(不是真正的并发),切换(上下文切换)时要保存变量的状态、执行进度等,存在时间开销; 随着硬件发展,出现了多处理器计算机:用于服务器和高性能计算领域。台式机:在一块芯片上有

weixin_39303983的博客 412

39、C++11多线程及其学习笔记

一、创建线程

BaoTTing的博客 2095

c++11多线程学习笔记(一)

该博客为记录学习C++11标准线程库,可能有所遗漏,希望大家多多指教! 文章目录1. 线程和进程的区别2. 并发与并行3. 多线程开启3.1 以一个无参数无返回值的函数作为线程的入口3.2 std::thread成员函数join()与detach()3.2 以一个带参数无返回值的函数作为线程的入口4.其他创建线程的手法4.1 以一个重载()运算符的类对象作为子线程的入口4.2 以一个类对象的成员函...

weixin_40198941的博客 412
上一篇: matlab添加arduino类库
下一篇: cuda nvcc生成ptx文件遇到的错误error: invalid redeclaration of type name "size_t"
qinxinger
博客等级 码龄8年 19粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值