子程式和協程的區別是什麼?
子程式
子程式定義為一組語句,可以在程式的多個地方方便地重複使用。這種重複使用帶來了多種型別的節省,從記憶體空間到編碼時間。這種重複使用也是一種抽象,因為子程式計算的分析是透過呼叫子程式的語句在程式中恢復的。
子程式的特性
子程式的特性如下:
子程式只有一個入口點。
在被呼叫子程式的實現過程中,呼叫者處於暫停狀態。
當被呼叫子程式的執行結束時,控制權將持續返回給呼叫者。
子程式的優點
子程式有以下優點:
子程式提高了可重用性。它可以在程式的多個地方重複使用一組語句。
子程式提供可擴充套件性,即它們允許您根據需要定製語言。例如,如果您需要一個生成新部門的程式,您可以簡單地編寫一個。
子程式提高了可維護性,即如果其定義發生更改,則只有子程式會受到影響。這有助於維護和改進。
子程式有助於抽象,即要使用子程式,您應該瞭解它們的功能,而不是它們的工作原理。因此,您可以自頂向下建立應用程式,而無需考慮執行細節。
協程
協程是一種特殊的子程式,它有多個入口點。它們可以用來提供子程式的交錯執行。一般來說,協程是一種特殊的子程式,它在執行完成之前返回到其呼叫程式。
協程部分執行,然後執行被暫停,控制權返回給呼叫者,稍後從暫停點恢復執行。第一個包含協程功能的高階語言是 SIMULA 67。其他支援協程的語言包括 BLISS、INTER LISP 和 MODULA-2。
讓我們看看子程式和協程的區別
| 子程式 | 協程 |
|---|---|
| 子程式被呼叫時會完全執行。 | 協程被呼叫時會部分執行。 |
| 每次呼叫子程式時,它都從子程式的開頭開始執行。 | 協程從上次執行暫停的地方恢復執行。 |
| 呼叫者和被呼叫者子程式之間存在主從關係。 | 呼叫者和被呼叫者協程被平等對待,不存在主從關係。 |
| 子程式只有一個入口點。 | 協程可以有多個入口點。 |
| 子程式不依賴於歷史。 | 協程必須依賴於歷史。 |
| 子程式的呼叫稱為子程式呼叫。 | 協程的呼叫稱為協程恢復。 |
| 它提供完整的執行。 | 它提供交錯執行。 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP