linux下的线程

概念理解

linux下没有线程的概念,只有轻量级进程的概念,

有接口:clone()

是clone()调用,在库中创建栈

源码解析

cpp 复制代码
 int clone(int (*fn)(void *), void *child_stack,
                 int flags, void *arg, ...
                 /* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ );

       /* Prototype for the raw system call */

       long clone(unsigned long flags, void *child_stack,
                 void *ptid, void *ctid,
                 struct pt_regs *regs);

图示解析

tid叫做线程控制块在线程库中的地址

Linux中的线程一般叫做用户级线程,必须依靠底层的lwp(轻量级线程功能支持)

线程栈的理解:

每一条执行流就是一条调运连

每一个对应的执行流都要有对应的内存空间(每一个线程main()函数都要有自己的栈)

栈结构是为了支持相对调运连的临时变量的开辟和释放,让自己的调用连不受别人的干扰

线程的局部存储:

__thread + a(变量名) 作用是每一个线程都会有一个私有变量a,

__thread 是编译器提供的, 是编译选项,局部存储只能存储c,c++中内置类型

使用场景:

线程中可能需要调用函数,也可能调用需要另一个函数的返回值,这个情况就需要把另一个函数的返回值存储起来,这就用到了局部存储(__thread)

相关推荐
yyuuuzz15 分钟前
企业出海云服务器部署踩坑记录:从频繁超时到稳定运行的复盘
运维·服务器·网络·人工智能·aws
淼澄研学17 分钟前
基于Docker与iptables的AI智能体网络隔离实操指南
开发语言·python
科技研学社23 分钟前
服装后道自动化选型|五大品牌全自动激光开袋机深度对比分析报告
运维·自动化
莫陌尛.30 分钟前
Java核心知识点:直接内存、CPU密集型线程池、并行流对比文档
java·开发语言
西峰u36 分钟前
Java多线程初阶完整总结|线程、锁、volatile、等待通知、常见案例
java·开发语言·jvm
中电金信36 分钟前
源启DevOps平台落地实践:从40分钟到3分钟,构建部署提效13倍
运维·devops
Linux运维技术栈38 分钟前
深度拆解 Linux logrotate 重复切割问题:根因、排查与生产级根治方案
linux·logrotate
2401_834636991 小时前
Docker 容器化技术全解:从镜像构建到容器编排的完整教案2
运维·docker·容器
ouynagda1 小时前
Linux多线程:互斥锁与信号量学习笔记
linux·笔记·学习
qq_25294131681 小时前
窗户清洁检测数据集 | 窗户清洁检测 建筑运维 二分类任务 YOLO格式 深度学习数据集9019期
运维·人工智能·深度学习·yolo·目标检测·分类·窗户清晰度