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)

相关推荐
默|笙几秒前
【Linux】进程信号(4)_信号捕捉_内核态与用户态
linux·运维·服务器
supersolon2 分钟前
PVE9安装32位爱快路由(ikuai)
linux·运维·网络
123过去3 分钟前
mfterm使用教程
linux·网络·测试工具·安全
深圳市恒讯科技3 分钟前
OpenClaw 2026安全指南
运维·服务器·安全
海兰3 分钟前
使用 TypeScript 创建 Elasticsearch MCP 服务器
服务器·elasticsearch·typescript·mcp
ywf12153 分钟前
java进阶1——JVM
java·开发语言·jvm
学编程的小程4 分钟前
我的极空间 NAS 进阶玩法:开启 SSH,解锁私有云服务器新体验
运维·服务器·ssh
123过去5 分钟前
nfc-mfclassic使用教程
linux·网络·测试工具·安全
深念Y5 分钟前
飞牛OS部署MCSM搭建MC服务器完整教程
运维·服务器·jdk·端口·nas·mc·飞牛os
JACK的服务器笔记5 分钟前
《服务器测试百日学习计划——Day14:BMC基础与健康状态,为什么服务器排障不能只看OS》
运维·服务器·学习