搜尋

首頁  >  問答  >  主體

php - 協程是什麼?有什麼應用場景

如何理解協程,協程有什麼應用場景
從鳥哥這看幾個例子,我的理解是在函數使用yield,就會在那產生中斷點,下次使用這個函數時就會從這個中斷點開始運行,不過我不知道我的理解對不對。 。還有應用程式場景不知道是怎樣的

给我你的怀抱给我你的怀抱2780 天前787

全部回覆(2)我來回復

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:12:47

    進程、執行緒與協程的理解

    回覆
    0
  • 黄舟

    黄舟2017-05-16 13:12:47

    關於協程,你可能看的最多的就是這樣一句話「協程就是用戶狀態的線程」.

    要理解是什麼是“用戶態的線程”,必然就要先理解什麼是“內核態的線程”。 內核狀態的線程是由作業系統來進行調度的,在切換線程上下文時,要先保存上一個線程的上下文,然後執行下一個線程,當條件滿足時,切換回上一個線程,並恢復上下文。 協程也是如此,只不過,使用者態的執行緒不是由作業系統來調度的,而是由程式設計師來調度的,是在使用者態的。

    yield这个关键字就是用来产生中断, 并保存当前的上下文的, 比如说程序的一段代码是访问远程服务器,那这个时候CPU就是空闲的,就用yield让出CPU,接着执行下一段的代码,如果下一段代码还是访问除CPU以外的其它资源,还可以调用yield讓出CPU. 繼續往下執行,這樣就可以用同步的方式寫異步的程式碼了.

    回覆
    0
  • 取消回覆