0
我已經閱讀了幾個教程,並且無處不在播放被稱爲「非阻止」。我很困惑,說非阻塞是指異步或非阻塞I/O。播放是異步或非阻止框架
根據我的理解,當在播放服務器上收到任何http請求時,它會分配一個專用線程來處理該請求,並保留該線程直到它返回響應。那麼它是如何非阻塞的呢?
同樣通過異步它們是否意味着主線程可以產生一個新線程並委託它的工作並運行下一條語句? (爲此我們需要使用akka)
我已經閱讀了幾個教程,並且無處不在播放被稱爲「非阻止」。我很困惑,說非阻塞是指異步或非阻塞I/O。播放是異步或非阻止框架
根據我的理解,當在播放服務器上收到任何http請求時,它會分配一個專用線程來處理該請求,並保留該線程直到它返回響應。那麼它是如何非阻塞的呢?
同樣通過異步它們是否意味着主線程可以產生一個新線程並委託它的工作並運行下一條語句? (爲此我們需要使用akka)
爲了理解這一點,您需要了解Scala中的Futures如何工作。期貨不會停止執行該計劃。所有期貨都是非阻隔的。我建議你閱讀這個:http://docs.scala-lang.org/overviews/core/futures.html。
由於play的異步庫建立在Scala的期貨之上。一旦你完成了,你將有足夠的知識來回答你自己的問題。
https://www.playframework.com/documentation/2.5.x/ScalaAsync
那麼,它不分配一個專門的線程:另外,如果您需要了解期貨是如何在遊戲中使用更多的信息,請閱讀此。你從哪裏讀到的? – rethab
我在我的項目中使用play,以及我在工作時觀察到的情況是,除非返回線程正在等待的響應。我們正在調用外部服務,直到該外部服務給出響應線程仍然被阻止。 – user1147070