尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
信号量(DispatchSemaphore vs AsyncSemaphore)、swift协作式线程池 and python信号量
通俗讲清楚 Task、挂起(suspend)、不阻塞内核线程先把两个东西拆开对比用你熟悉的GCD做参照物。1、DispatchSemaphoreGCD老信号量底层操作对象操作系统内核线程OS ThreadletsemDispatchSemaphore(value:2)sem.wait()当计数为0wait()会调用操作系统内核把当前正在跑的这条内核线程直接休眠、卡住。这条线程原地不动什么活都干不了内核把它调度出去。直到别的线程调用signal()内核再把这条线程唤醒。代价占住一条操作系统线程资源干等不能干别的。如果并发网络请求很多GCD为了不卡住会不停新建更多内核线程 →线程爆炸。2、Swift Concurrency 的 Task AsyncSemaphore协程任务Task ≠ 操作系统内核线程Task 是Swift运行时在堆上分配的一个普通对象保存局部变量、代码执行到哪一行、状态运行/挂起。你可以创建成千上万个Task不会创建成千上万个内核线程。Swift有一个协作式线程池线程数量基本等于CPU物理核数比如手机8核池子就8条工作内核线程不会疯狂新增线程。await 挂起suspend重点不是block阻塞当执行到await sem.wait()AsyncSemaphore许可用完的时候当前这个Task立刻被挂起。Swift运行时把这个Task所有现场变量、执行位置保存到堆内存。把这条正在使用的内核线程还给线程池释放出来这条内核线程马上拿去跑另外一个就绪的Task。被挂起的Task就安安静静躺在内存队列里等待它不占任何内核线程等到别的Task调用signal()释放许可这个等待的Task标记为就绪线程池里面一旦有空闲内核线程就拿过来继续跑这个Task剩下的代码。重点等待的时候Task被挂起内核线程已经被回收去干别的活没有线程被卡住休眠。这就是我说的操作Task用户态对象不碰、不阻塞操作系统内核线程。举个生活化比喻DispatchSemaphore(GCD)会议室有2把椅子许可。来5个人任务。没椅子的人就原地站死等人内核线程占住啥别的活不干。人多了就不停招人新建内核线程来排队站着。AsyncSemaphore(Swift Concurrency)会议室2把椅子。来5个人Task。没椅子的人全部坐到大厅等候区堆内存队列人离开工位释放内核线程工位给其他人用。椅子空出来再叫大厅的人上来坐椅子干活。等候区坐1000个人都没事不会占用工位。大厅的人就是被挂起的Task不占用工位内核线程只是内存对象。上图逻辑Task A走到await挂起释放线程线程立刻跑Task C等条件就绪再拿一条空闲线程回来继续跑Task A。3、非常关键的认知纠正Task本身不是线程Task是一段要执行的作业它只是临时借用线程池里面的内核线程跑一会儿遇到await挂起点就把线程还回去。同一个Task前后执行甚至可能跑在不同的内核线程上。DispatchSemaphore.wait()阻塞内核线程内核层面sleepawait AsyncSemaphore.wait()挂起Task用户态Runtime管理释放内核线程内核完全不知道这个Task在等。4、为什么GCD容易线程爆炸Swift Concurrency可以开成千上万TaskGCD全局并发队列只要有任务在wait()把线程阻塞住GCD就会新建内核线程保证后面任务有线程跑越阻塞线程越多。Swift ConcurrencyTask遇到await就归还线程不会占住线程死等线程池数量固定等于CPU核数不会无限创建线程哪怕几百上千Task同时等待也只消耗内存不消耗内核线程资源。5、和Python做个一一对应打通你前面MinerU那套SwiftPython行为DispatchSemaphorethreading.Semaphore阻塞操作系统内核线程必须多线程才有意义Task AsyncSemaphore协程 asyncio.Semaphore挂起Task/协程释放OS线程等待阶段不占用内核线程MinerU第三方MCP大量协程asyncio.Semaphore限流。成千上百协程对象但是OS就一条主线程等待网络的时候线程空闲处理别的协程。和Swift TaskAsyncSemaphore逻辑一模一样。6、一个高频踩坑Swift❌千万不要在async函数内部调用GCD的DispatchSemaphore.wait()Task{letsemDispatchSemaphore(value:0)sem.wait()// ❌灾难直接把线程池的一条内核线程给阻塞占死不归还}这里wait()会把协作线程池的worker线程永久卡住线程池可用线程变少严重直接卡死整个并发运行时。Swift async环境里面要限流就用AsyncSemaphore绝对不要用GCD信号量。简短总结用户态协程Task不碰内核线程Task是Swift运行时用户态维护的作业对象保存在堆内存不是操作系统内核线程。当await AsyncSemaphore.wait()拿不到许可Task被挂起保存现场把正在使用的内核线程归还线程池线程可以去跑别的任务。等待期间没有任何操作系统线程被休眠、阻塞内核完全不知道这个Task在等待全部逻辑在Swift Runtime用户态完成排队。只有当Task被唤醒要继续执行的时候才会再次“借”一条内核线程跑代码。而老的DispatchSemaphore直接调用操作系统内核让真正的内核线程休眠卡住这就是两者本质鸿沟。
RELATED

相关推荐

AI 驱动的电商大促与企业协同面试实录:Spring Boot + Kafka + Redis + MCP / RAG 深度追问

AI 驱动的电商大促与企业协同面试实录:Spring Boot + Kafka + Redis + MCP / RAG 深度追问

AI 驱动的电商大促与企业协同面试实录:Spring Boot Kafka Redis MCP / RAG 深度追问场景:互联网大厂 Java 求职面试人物:严肃面试官、搞笑的水货程序员燕双非第一轮:电商大促与订单链路面试官:我们先从电商大促讲起…

📅 2026/10/16 21:54:32
5分钟完成首次直播:OBS Studio 免费直播录屏完整指南

5分钟完成首次直播:OBS Studio 免费直播录屏完整指南

5分钟完成首次直播:OBS Studio 免费直播录屏完整指南 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 想开播,…

📅 2026/10/29 16:41:43
DeepSeek-V4 1M上下文实战:从技术原理到Agent与代码开发革新

DeepSeek-V4 1M上下文实战:从技术原理到Agent与代码开发革新

1. 从“128K”到“1M”:一次技术普惠的范式转移如果你最近关注AI圈子,大概率已经被“DeepSeek-V4”和“1M上下文”这两个词刷屏了。作为一名长期混迹在开源模型和工程落地一线的开发者,我最初看到这个消息时,第一反应是“又来画饼…

📅 2026/10/31 5:59:27
MORE NEWS

更多资讯

📰

光明新区电工证报名点考前押题怎么准备?证书过期了不知道怎么复审延期

光明新区电工证报名点考前押题怎么准备?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,你不是一个人。很多电工从业者在拿到特种作业操作证后,因为工作变动、证件保管不善等原因,常常忽略了证书的有效期,等到真正需要用到证书时才发现已经…

📰

许昌低压电工证查询通过率揭秘:外省证能转过来吗?一文说清

许昌低压电工证查询通过率揭秘:外省证能转过来吗?一文说清 之前考的证在外省能不能转过来?这个问题让很多在漯河打工的建筑工人愁眉不展,尤其是在许昌地区从事低压电工工作的朋友,想了解 许昌低压电工证查询 的流程和 通过率揭秘…

📰

武汉怎么报考电工证 全国通用怎么考得快

武汉怎么报考电工证 全国通用怎么考得快 工地太忙根本没时间复习考试,这几乎是每个特种作业人员的真实写照,尤其是像电工这类实操性极强又需要考试的证书,很多人不是因为不会做,而是因为没时间准备。不过别担心, 武汉怎么报考电工证…

📰

电工证等级证哪里查?证书过期了不知道怎么复审延期怎么办

电工证等级证哪里查?证书过期了不知道怎么复审延期怎么办 你手上那个电工证快到期了,但不知道在哪里查证、怎么复审延期,这种焦虑我懂。很多人在证书快过期的时候才慌,想着能不能在官方报名入口上操作,结果一查就懵了。别急,今天我就从…

📰

湖北电工作业答案多久拿证?学历不高也能考,这证能让你月入上万

湖北电工作业答案多久拿证?学历不高也能考,这证能让你月入上万 学历不高怕报不上名?别急,湖北电工作业答案其实并不难搞,关键是你怎么去准备。很多人觉得报考特种作业操作证必须得是高学历、有专业背景,但事实上,像低压电工证、高压电工证这些证书,只…

📰

古交哪里考电工证值不值得考?这些干货帮你避开培训坑

古交哪里考电工证值不值得考?这些干货帮你避开培训坑 怕考不过白交培训费?别急,先搞清楚古交哪里考电工证,再判断值不值得考。你不是一个人在焦虑,身边好多同行都踩过坑。这篇文章就带你一步步搞明白,从报考流程到备考技巧,不花冤枉钱,一次通过拿证。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬