5

我想知道如何避免一个套接字连接pr。Scala 中的线程。我想了很多,但我总是得到一些代码来监听每个客户端连接的传入数据。

问题是我想开发一个应该同时处理几千个连接的应用程序。但是,由于缺乏可伸缩性和上下文切换,我当然不想为每个连接创建一个线程。

什么是“正确”的方法来做到这一点。在我的世界中,应该可以为每个连接设置一个参与者,而无需为每个参与者阻塞一个线程。

4

2 回答 2

5

在“Programming Scala”一书中,作者使用了一个名为 naggati 的库,它提供了一个结合了 NIO 和 actor 的框架,http ://programming-scala.labs.oreilly.com/ch09.html 。

于 2010-03-24T17:21:15.373 回答
4

我有一个将actor与非阻塞套接字(即NIO)混合的应用程序。我这样做的方法是有一个专用的 IO 线程,它使用反应器模式向参与者发送消息(与将工作委托给 Java 系统中的线程池的方式非常相似)。

显然,使用的阻塞套接字,每个连接只能使用一个线程。Actor 可以处理这个问题,但是这当然限制了可以同时处理的连接数。

在单个 IO 线程的情况下,这在理论上一个瓶颈,但在实践中(在我们的观察中)并不多,因为 IO 线程正在执行计算非密集型工作。关于 NIO反应器模式有很多很好的讨论。

于 2010-03-24T16:25:48.143 回答