C++ Thread 源码 观后 自我感悟 整理

Thread的主要数据成员为_Thr

里面存储的是线程句柄和线程ID

先看看赋值运算符的移动构造

最开始判断线程的ID是否不为0

_STD就是使用std的域

如果线程ID不为0,那么就抛出异常

这里_New_val使用了完美转发,交换_Val和_New_val的值

_Thr = _STD exchange(_Other._Thr, {});

这里应该是把_Other._Thr的值赋值给_Thr,然后将_Other._Thr的值置空

最后返回线程本身

第一个判断我们已经看了,就是判断_Thr_Id != 0

如果_Thr_Id == 0了,则抛出异常

第二个我看了_Thrd_id()其实就是一个unsigned int,但是具体是什么我不知道,ID出问题了会抛出异常吧

第三个,是线程启动不成功,则抛出异常

主要这里是_Thrd_detach的调用,使得线程分离

这里也用了完美转发,也是Thread的构造函数

enable_if_t:

这里必须要模板参数为整形才能调用isInt

参考文章:C++(11):enable_if_t-CSDN博客

std::is_same_v:判断输入的类型是否是指定的模板类型

_Start函数内,就把函数和参数信息给到了_Thr._Hnd线程句柄上去了


定义类,还可以这么去玩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SAO-LSTM雪消融…

【Linux】进程的进一步认识

目录 进程的创建 fork函数初步认识 fork函数的返回值 写时拷贝 操作系统怎么知道什么时候要写时拷贝的呢? fork的常规用法 fork调用失败的原因 进程终止 进程的退出场景 进程常见退出方法 正常终止(可以通过 echo $? 查看进程退出码&#xff…

Spring Boot从入门到实战

课程介绍 本课程从SpringBoot的最基础的安装、配置开始到SpringBoot的日志管理、Web业务开发、数据存储、数据缓存,安全控制及相关企业级应用,全程案例贯穿,案例每一步的都会讲解实现思路,全程手敲代码实现。让你不仅能够掌Sprin…

【Linux操作系统】:进程控制

目录 一、程序地址空间 1.C/C中的程序地址空间 2.进程地址空间 进程地址空间概念 什么是地址空间?什么是区域划分? 为啥要有地址空间? 地址空间的补充 二、进程创建 1.fork函数 2.写时拷贝 3.fork常规用法 4.fork调用失败的原因 …

Android冷启动优化

一、应用启动的三种状态 冷启动:系统不存在App进程(APP首次启动或APP被完全杀死)时启动APP,此时,APP的启动将经历两个阶段: 1、创建app进程:系统启动应用程序进程和虚拟机,创建app…

多线程(8)为什么需要Runnable接口

Runnable接口在Java中的多线程编程中起着关键作用,它提供了一种将执行代码与线程机制分离的方式。我们将通过分析Runnable接口的定义,以及如何与Thread类一起工作来详细解释它的必要性。 Runnable接口的定义: 在Java中,Runnable…

Linux 常用命令 1

Tips:终端热键ctrl shift 放大终端窗口的字体 ctrl - 缩小终端窗口的字体 注意区分大小写 查阅命令帮助信息: 1)--help command –help(两个减号) 显示command命令的帮助信息 2)man man command 查阅command命令的使…

MyEclipse打开文件跳转到notepad打开问题

问题描述 windows系统打开README.md文件,每次都需要右键选择notepad打开,感觉很麻烦,然后就把README.md文件打开方式默认选择了notepad,这样每次双击就能打开,感觉很方便。 然后某天使用MyEclipse时,双击RE…

分布式详解

文章目录 概述分布式开发优点和缺点分布式存在的作用分布式和集群的区别集群的特点集群脑裂BASE 理论BASE 理论的三要素CAP理论二段式满足cap理论的哪两个理论 分析下分布式强一致性、弱一致性、最终一致性衡量分布式系统的指标分布式下down机的处理⽅案分布式系统设计paxos和r…

matlab实现神经网络检测手写数字

一、要求 1.计算sigmoid函数的梯度; 2.随机初始化网络权重; 3.编写网络的代价函数。 二、算法介绍 神经网络结构: 不正则化的神经网络的代价函数: 正则化: S型函数求导: 反向传播算法&…

【Linux】Linux工具学习之git

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言一、账号注册1.1 GitHub与Gitee 二、构建仓库三、安装git 四、配置git五、克…

详解库和程序运行过程

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

lvgl 窗口 windows lv_port_win_visual_studio 版本 已解决

不知道的东西,不知道lvgl窗口。一切从未知开始 lv_port_win_visual_studio 主分支 对应的分支 v7版本更新git submodule update --init --recursive同步 lvgl代码随后打开 visualSudio 打开.sln 文件 编译 release模式 允许 一切正常代码部分

perl:获取同花顺数据--业绩预告,送股派息

perldoc LWP::UserAgent 如果没有安装,则安装模块,运行 cpanm LWP::UserAgent 。 编写 get_yjyg_10jqka.pl 如下 #!/usr/bin/perl # perl 获取同花顺数据--业绩预告 use LWP::UserAgent; use Encode qw(decode encode); use POSIX; use Data::Dump…

JavaWeb——Servlet

请求转发是一次转发请求转发URL地址不会发生变化,会保留当前Servlet的资源访问路径共享同一个Request作用域,可用于多页面之间传递数据 getServletContext() 返回一个ServletContext()对象 获取请求头信息 getHeader(String key)根据key获取value 例如 r…

Element UI el-dialog自由拖动功能

1.创建drag .js文件 /*** 拖拽移动* param {elementObjct} bar 鼠标点击控制拖拽的元素* param {elementObjct} target 移动的元素* param {function} callback 移动后的回调*/ export function startDrag(bar, target, callback) {var params {top: 0,left: 0,currentX: …

学习资料记录

http://interview.wzcu.com/Golang/%E4%BB%A3%E7%A0%81%E8%80%83%E9%A2%98.html map底层 https://zhuanlan.zhihu.com/p/616979764 go修养 https://www.yuque.com/aceld/golang/ga6pb1#4b19dba5 https://golang.dbwu.tech/performance/map_pre_alloc/ https://juejin.cn/pos…

C++11新特性:sizeof... 运算符

在 C11 及其后续版本中,引入了一项新的语言特性——sizeof...运算符,这是一个与模板编程紧密相关的特性。 你没看错,sizeof 后面是三个点:sizeof... sizeof...运算符用于计算变参模板(variadic template)…

考研数学基础差,跟宋浩?

宋浩老师的课程我大一的时候听过,是我大一高数的救命恩人! 不过,考研的针对性很强,基础差听宋浩老师的课程不如直接听汤家凤老师的课程,因为汤家凤老师的课程是专门为考研数学设计的,针对性很强。 汤家凤老…

K8S之DaemonSet控制器

DaemonSet控制器 概念、原理解读、应用场景概述工作原理典型的应用场景介绍DaemonSet 与 Deployment 的区别 解读资源清单文件实践案例 概念、原理解读、应用场景 概述 DaemonSet控制器能够确保K8S集群所有的节点都分别运行一个相同的pod副本; 当集群中增加node节…