【2018-07-19】Linux线程模型NPTL简单笔记

发布时间:2026/7/19 15:54:47

【2018-07-19】Linux线程模型NPTL简单笔记
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2018-07-19 标题Linux线程模型NPTL简单笔记分类编程 标签linux·thread·nptlLinux线程NPTL简单笔记历史设计参考链接《 https://blog.csdn.net/ttomqq/article/details/53172504 》《 https://www.ibm.com/developerworks/cn/linux/l-threading.html 》POSIX Thread Library (NPTL)使Linux内核可以非常有效的运行使用POSIX线程标准写的程序。这里有一个测试数据在32位机下NPTL成功启动100000个线程只用了2秒而不使用NPTL将需要大约15分钟左右的时间。历史在内核2.6以前的调度实体都是进程内核并没有真正支持线程。它是能过一个系统调用clone()来实现的这个调用创建了一份调用进程的拷贝跟fork()不同的是,这份进程拷贝完全共享了调用进程的地址空间。LinuxThread就是通过这个系统调用来提供线程在内核级的支持的(许多以前的线程实现都完全是在用户态内核根本不知道线程的存在)。非常不幸的是这种方法有相当多的地方没有遵循POSIX标准特别是在信号处理调度进程间通信原语等方面。很显然为了改进LinuxThread必须得到内核的支持并且需要重写线程库。为了实现这个需求开始有两个相互竞争的项目IBM启动的NGTP(Next Generation POSIX Threads)项目以及Redhat公司的NPTL。在2003年的年中IBM放弃了NGTP也就是大约那时Redhat发布了最初的NPTL。NPTL最开始在redhat linux 9里发布现在从RHEL3起内核2.6起都支持NPTL并且完全成了GNU C库的一部分。设计NPTL使用了跟LinuxThread相同的办法在内核里面线程仍然被当作是一个进程并且仍然使用了clone()系统调用(在NPTL库里调用)。但是NPTL需要内核级的特殊支持来实现比如需要挂起然后再唤醒线程的线程同步原语futex.NPTL也是一个1*1的线程库就是说当你使用pthread_create()调用创建一个线程后在内核里就相应创建了一个调度实体在linux里就是一个新进程这个方法最大可能的简化了线程的实现。除NPTL的1*1模型外还有一个m*n模型通常这种模型的用户线程数会比内核的调度实体多。在这种实现里线程库本身必须去处理可能存在的调度这样在线程库内部的上下文切换通常都会相当的快因为它避免了系统调用转到内核态。然而这种模型增加了线程实现的复杂性,并可能出现诸如优先级反转的问题此外用户态的调度如何跟内核态的调度进行协调也是很难让人满意。

相关新闻

5个核心功能,让你彻底掌握VS Code Git Graph可视化工具

5个核心功能,让你彻底掌握VS Code Git Graph可视化工具

2026/7/19 15:54:47

5个核心功能,让你彻底掌握VS Code Git Graph可视化工具 【免费下载链接】vscode-git-graph View a Git Graph of your repository in Visual Studio Code, and easily perform Git actions from the graph. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-g…

跨越天际:从智能汽车到 eVTOL 的适航与系统级开发46——全天候运行瓶颈 旋翼结冰机理、防冰/除冰系统 IPS 设计与桨叶动平衡控制

跨越天际:从智能汽车到 eVTOL 的适航与系统级开发46——全天候运行瓶颈 旋翼结冰机理、防冰/除冰系统 IPS 设计与桨叶动平衡控制

2026/7/19 15:44:47

摘要:eVTOL全天候运行面临旋翼结冰的致命威胁,过冷水滴撞击导致升力骤降和结构失衡。需设计分布式电热防/除冰系统(IPS),通过分时脉冲加热降低能耗,并开发桨叶动平衡主动控制技术,以应对非对称冰…

Clarity社区贡献指南:从问题报告到代码提交的完整流程

Clarity社区贡献指南:从问题报告到代码提交的完整流程

2026/7/19 15:44:47

Clarity社区贡献指南:从问题报告到代码提交的完整流程 【免费下载链接】clarity Comically fast Dota 2, CSGO, CS2 and Deadlock replay parser written in Java. 项目地址: https://gitcode.com/gh_mirrors/clari/clarity Clarity是一款开源的游戏回放解析…

python数据可视化技巧的100个练习 -- 31. 类别数据的点图

python数据可视化技巧的100个练习 -- 31. 类别数据的点图

2026/7/20 0:15:16

重要性★★★☆☆ 难度★★☆☆☆ 你是一家零售公司的数据分析师。你的经理要求你可视化最近产品发布的客户满意度评级分布。评级是分类的,范围从“非常不满意”到“非常满意”。创建一个点图以显示每个评级类别的频率。使用 Python 进行数据处理和可视化。在代码中生成输入…

智能体走进物理世界,千里科技携舱驾协同成果亮相WAIC 2026

智能体走进物理世界,千里科技携舱驾协同成果亮相WAIC 2026

2026/7/20 0:15:16

在2026世界人工智能大会(WAIC 2026)举办期间,千里科技董事长、阶跃星辰董事长印奇作为特邀嘉宾出席大会开幕式并在大会主论坛(上午场)发表主题演讲《当智能体进入物理世界》。在印奇看来,"智能体"…

商汤大装置发布“技术-生态-商业”闭环布局,共启“国产AI基础设施规模化商用元年”

商汤大装置发布“技术-生态-商业”闭环布局,共启“国产AI基础设施规模化商用元年”

2026/7/20 0:15:16

7月18日,在WAIC 2026商汤科技 “基座大模型架构创新与生态合作论坛”上,商汤科技联合创始人、大装置事业群总裁杨帆发表《智变共生——加速AI基础设施持续升级》主题演讲,系统呈现了商汤大装置国产AI基础设施“技术-生态-商业”闭环布局&…

ngx_output_chain_get_buf

ngx_output_chain_get_buf

2026/7/20 0:15:16

1 定义 ngx_output_chain_get_buf 函数 定义在 src/core/ngx_output_chain.cstatic ngx_int_t ngx_output_chain_get_buf(ngx_output_chain_ctx_t *ctx, off_t bsize) {size_t size;ngx_buf_t *b, *in;ngx_uint_t recycled;in ctx->in->buf;size ctx->buf…

互联网大厂常见Java面试题及答案汇总(2026持续更新)

互联网大厂常见Java面试题及答案汇总(2026持续更新)

2026/7/20 0:15:16

金九银十即将来袭,又是一个跳槽的好季节,准备跳槽的同学都摩拳擦掌准备大面好几场,今天为大家准备了互联网面试必备的 1 到 5 年 Java 面试者都需要掌握的面试题,分别 JVM,并发编程,MySQL,Tomca…

STM32H7 QSPI Flash下载算法制作指南

STM32H7 QSPI Flash下载算法制作指南

2026/7/20 0:05:15

1. STM32H7 QSPI Flash下载算法制作概述在STM32H7系列微控制器的开发过程中,外部QSPI Flash存储器常被用于扩展存储空间。然而,MDK开发环境默认并不支持所有型号的QSPI Flash编程,这就需要我们自行制作下载算法。本文将详细介绍如何为STM32H7…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/19 0:03:49

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/19 0:03:49

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/19 0:03:49

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

SoC超时垫片机制:从硬件原理到软件实战的可靠性设计

SoC超时垫片机制:从硬件原理到软件实战的可靠性设计

2026/7/20 0:05:15

1. 系统互联中的“守门员”:超时与异常响应处理机制在复杂的SoC(片上系统)设计中,处理器核心、内存控制器、外设等数十甚至上百个IP模块通过高速片上互联网络(如VBUSM、AXI、CHI)进行通信。这个网络就像一座…

一键批量建文件夹工具省时间效率神器

一键批量建文件夹工具省时间效率神器

2026/7/20 0:05:15

软件介绍 批量创建文件夹这事听起来简单,右键新建就行,但真要你一口气建几十个、上百个的时候,你才知道有多崩溃。今天这款工具就是专门治这个病的,而且玩法特别——它根本不是传统意义上的软件,就是一个Excel表格。 …

C++短信服务开发实践:从SMPP协议到高并发架构设计

C++短信服务开发实践:从SMPP协议到高并发架构设计

2026/7/20 0:05:15

1. 项目概述:为什么我们需要自己动手搭建短信服务?在当前的互联网产品开发中,短信验证码、通知提醒、营销推广几乎是标配功能。很多开发者,尤其是刚入行的朋友,第一反应是去集成阿里云、腾讯云等大厂的短信服务SDK。这…