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)

相关推荐
dddwjzx几秒前
嵌入式Linux C应用编程——输入设备
linux·嵌入式
爆浇牛肉面几秒前
Linux三剑客与管道使用全解析:从入门到实战
linux
CHANG_THE_WORLD8 分钟前
逐层拆解:C++ 虚函数从对象内存到手工调用的完整过程
java·开发语言·c++
Scott9999HH10 分钟前
2026 避坑实录:国产品牌压力变送器什么牌子好?从硬件抗扰到 C++ Qt 实时曲线绘制源码剖析
开发语言·c++·qt
Starry-sky(jing)11 分钟前
如何判断 Windows 是否安装 Node.js:三种方法 + 常见漏判场景
运维·windows·node.js·环境检测
geats人山人海25 分钟前
c# 第八章 多态与案例
开发语言·c#
ch_atu34 分钟前
使用python下载modelscope上的模型
开发语言·python
土星云SaturnCloud40 分钟前
智慧港口边缘计算:基于土星云边缘计算设备的三级架构设计与实战
服务器·人工智能·ai·边缘计算
lightqjx42 分钟前
【Linux系统】程序地址空间(初识)
linux·页表·地址空间
funnycoffee1231 小时前
华为USG防火墙端口有收光,无法UP故障
服务器·网络·华为