如何理解協程,協程有什麼應用場景從鳥哥這看幾個例子,我的理解是在函數使用yield,就會在那產生中斷點,下次使用這個函數時就會從這個中斷點開始運行,不過我不知道我的理解對不對。 。還有應用程式場景不知道是怎樣的
進程、執行緒與協程的理解
關於協程,你可能看的最多的就是這樣一句話「協程就是用戶狀態的線程」.
要理解是什麼是“用戶態的線程”,必然就要先理解什麼是“內核態的線程”。 內核狀態的線程是由作業系統來進行調度的,在切換線程上下文時,要先保存上一個線程的上下文,然後執行下一個線程,當條件滿足時,切換回上一個線程,並恢復上下文。 協程也是如此,只不過,使用者態的執行緒不是由作業系統來調度的,而是由程式設計師來調度的,是在使用者態的。
yield这个关键字就是用来产生中断, 并保存当前的上下文的, 比如说程序的一段代码是访问远程服务器,那这个时候CPU就是空闲的,就用yield让出CPU,接着执行下一段的代码,如果下一段代码还是访问除CPU以外的其它资源,还可以调用yield讓出CPU. 繼續往下執行,這樣就可以用同步的方式寫異步的程式碼了.
yield
進程、執行緒與協程的理解
關於協程,你可能看的最多的就是這樣一句話「協程就是用戶狀態的線程」.
要理解是什麼是“用戶態的線程”,必然就要先理解什麼是“內核態的線程”。 內核狀態的線程是由作業系統來進行調度的,在切換線程上下文時,要先保存上一個線程的上下文,然後執行下一個線程,當條件滿足時,切換回上一個線程,並恢復上下文。 協程也是如此,只不過,使用者態的執行緒不是由作業系統來調度的,而是由程式設計師來調度的,是在使用者態的。
yield
这个关键字就是用来产生中断, 并保存当前的上下文的, 比如说程序的一段代码是访问远程服务器,那这个时候CPU就是空闲的,就用yield
让出CPU,接着执行下一段的代码,如果下一段代码还是访问除CPU以外的其它资源,还可以调用yield
讓出CPU. 繼續往下執行,這樣就可以用同步的方式寫異步的程式碼了.