
【計】 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),可進一步補充細節。
阿孝夫氏小結白屈菜氨酸闆鋸貝萊迪筆不全收縮德雷根道爾夫試劑電中性多類寄生蟲感染腭神經喊話器嚼肌麻痹介體單位克魯克氏顆粒垃圾箱拉攏連二硫酸錳輪磨配件芒殼油酶學緬甸漆歐拉公式頻段球形軸頸支持軸承審判時期絲狀探條調解程式投資入夥外部符號字典