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)

相关推荐
love530love几秒前
【笔记】ComfyUI 源码部署版更新后一键修复:从手动补丁到自动化工作流
运维·人工智能·windows·笔记·python·自动化·comfyui
qq_45239623几秒前
第十七篇:《Docker 日志管理:驱动配置与集中收集》
运维·docker·容器
hj2862511 分钟前
Linux + 计算机网络全套精炼整理笔记
linux·运维
爱吃羊的老虎1 分钟前
【JAVA】Java微服务—分布式事务框架Seata
java·开发语言
剑神一笑5 分钟前
Linux chmod 命令深度解析:从权限位到符号模式的完整指南
linux·运维·chrome
流浪0015 分钟前
LInux系统篇(二):深入剖析 Linux 进程:状态变迁、优先级及调度切换逻辑
linux·运维·服务器
daad7775 分钟前
记录一个串口模块没有回包的问题
linux·运维·服务器
开发者联盟league6 分钟前
在ubuntu上使用apt方式安装gitlab
linux·ubuntu·gitlab
Wonderful U7 分钟前
基于Python+Django的智能在线考试系统:从题库管理到自动阅卷的全流程实战
开发语言·python·django
青梅橘子皮10 分钟前
Linux---虚拟地址空间
linux·运维·算法