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)

相关推荐
阿里嘎多学长2 分钟前
2025-12-21 GitHub 热点项目精选
开发语言·程序员·github·代码托管
RemainderTime3 分钟前
(十)Spring Cloud Alibaba 2023.x:生产级 CI/CD 全链路实战(从 Dockerfile 到 Jenkins)
运维·spring cloud·ci/cd·docker·jenkins
yenggd8 分钟前
华为SRv6 BE跨域配置案例
运维·网络·计算机网络·华为
wanghowie8 分钟前
01.04 Java基础篇|泛型、注解与反射实战
java·开发语言·windows
大猫和小黄9 分钟前
Windows环境下在VMware中安装和配置CentOS 7
linux·windows·centos
DechinPhy11 分钟前
使用Python免费合并PDF文件
开发语言·数据库·python·mysql·pdf
梁正雄13 分钟前
linux服务-Kibana8原理与安装
linux·运维·服务器
qq_2526144115 分钟前
python爬虫爬取视频
开发语言·爬虫·python
专业开发者15 分钟前
楼宇自动化如何提升运营效率
运维·物联网·自动化
小陈又菜15 分钟前
【计算机网络】网络层知识体系全解:从基础概念到路由协议
服务器·人工智能·计算机网络·机器学习·智能路由器