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)

相关推荐
郝学胜-神的一滴几秒前
Effective Python 条款 1:确认你正在使用的 Python 版本
开发语言·数据结构·python·程序人生·算法
qetfw1 分钟前
Debian Samba 与 OpenLDAP 统一认证配置
linux·debian
初願致夕霞10 分钟前
《为什么公网访问不了内网?正向代理、内网穿透与 NAT 打洞一次说清》
linux·网络·tcp/ip·智能路由器
天远Date Lab12 分钟前
零信任架构实战:基于天远普通维保查询构建自动化车辆收车评估网关
运维·人工智能·架构·自动化
高磊200513 分钟前
Kubernetes Pod 管理实战详解
linux·容器·kubernetes
喜欢吃燃面18 分钟前
Linux网络编程深度解析:从Socket API到自定义协议设计
linux·网络·arm开发
流星白龙26 分钟前
【Docker】9.Docker 镜像仓库实战
运维·docker·容器
路多辛27 分钟前
全能型 Go Agent 框架 covonaut v1.0.8 发布:新增行内补全与多后端可观测性
开发语言·golang·agent
大模型丫丫29 分钟前
FastAPI 入门指南:从零开始构建高性能 Python API
开发语言·python·fastapi
朋友圈自动点赞工具33 分钟前
NAS游戏库自动下载新方案,Questarr部署教程
服务器·数据库·游戏·科技资讯