Coroutine
概述
協程可能是近幾年來最新的並行/併發模型實現,常見語言中最早的實現可能是lua,近年來新晉語言golang的崛起更把這個概念發揚光大。
儘可能不使用核心語言,而是標準庫來實現。
標準庫只提供核心功能,官方的第三方庫提供應用層介面。
非同步等操作使用協程封裝,同時協程可用於其他方面儘可能替代執行緒。
儘管如此,官方也不得不加入suspend關鍵字來標記協程可掛起函式,同時協程的實現也需要編譯器支援。
suspend關鍵字與C#等語言中的async關鍵字很接近。執行緒的排程由作業系統完成,而協程需要由執行時管理。為了標記一個函式可以被執行時掛起,需要此關鍵字。當然協程的範圍比非同步更廣,這裡不再贅述。