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