
【计】 coroutine
altogether; common; general; share; together
【医】 sym-; syn-
all right; business firm; profession; capable; carry out; prevail; conduct; go
travel; range; row; soon
【计】 row
【医】 dromo-
【经】 line
formality; ground rule; procedure; proceeding; process; program
【计】 P; problem determination aid; PROC; program; related channel program
【化】 sequence
【经】 program; sequence
共行程序(coroutine)是计算机编程中的协同式多任务处理机制,其核心特征在于多个子程序通过主动让出执行权实现协作式调度。该概念由Melvin Conway于1958年首次提出,并在1963年正式命名。相较于传统线程的抢占式调度,共行程序通过yield机制主动暂停自身并将控制权传递给其他例程,这种非抢占特性使其在资源管理和上下文切换效率方面具有优势。
在编程语言层面,共行程序存在两种典型实现模式:
现代应用场景主要集中在高并发网络服务和游戏开发领域,例如JavaScript的Generator函数通过function*语法实现协程式迭代器,Go语言的goroutine则基于CSP模型实现轻量级线程调度。国际电工委员会(IEC)在《软件工程术语标准》(ISO/IEC 2382:2015)中将其定义为"可挂起和恢复执行的程序单元"的标准化描述。
“共行程序”更常见的译法是协程(Coroutine),它是计算机科学中的一种程序执行机制,属于并发编程的范畴。以下是详细解释:
协作式多任务
协程通过主动让出控制权实现任务切换,而非依赖系统调度(如线程的抢占式切换)。多个协程在单一线程内交替执行,形成协作关系未搜索到相关网页。
轻量级特性
协程的创建和切换开销远小于线程或进程,适合处理高并发、I/O密集型任务(如网络请求、文件读写)。
状态保存
协程在暂停(yield)时会保存当前执行状态(如局部变量、程序计数器),恢复时直接从此状态继续运行。
特性 | 协程 | 线程 |
---|---|---|
调度方式 | 程序主动控制(协作式) | 操作系统强制调度(抢占式) |
资源消耗 | 极低(KB级内存) | 较高(MB级内存) |
适用场景 | 高并发、异步任务 | CPU密集型任务 |
yield
实现简单协程。async/await
本质是协程的语法糖。如果涉及具体语言实现(如Python的asyncio或Go的goroutine),可进一步补充细节。
半寄生八位数并行处理器拨出专款备付工人退休金不记名承兑齿科学挡路抢劫者登纳姆氏培养基递延的债务底釉泛硫乙胺非标准的氟桂利嗪高级通信软件古热罗氏孢子丝菌降生静止角具短尖的克罗宁可能寿命硫反应氯钌酸毛细管电现象平版传墨印刷胶布板前无古人三氧铬合硫酸朔佩尔式耐折度仪器伺服机酸性反应套利成本