Playframework 2.0 迭代与并发策略

Playframework 2.0 迭代与并发策略,playframework-2.0,Playframework 2.0,在评估不同的服务器解决方案时,我需要了解Play2在使用Iteratees时如何处理并发性,特别是在处理WebSocket请求时 如果你看一下这段代码,它显示了一个简单的websocket服务器和共享状态(一个协作绘制应用程序) 您将看到,每个websocket请求都可能修改共享状态,例如painters映射或连接计数器。这段代码是线程安全的吗?如果是(作者证实了这一点),Play2如何在内部处理并发性?不幸的是,目前我还没有足够的Scala级别来完全理解play2库代码 我想知道他们如何在高性

在评估不同的服务器解决方案时,我需要了解Play2在使用Iteratees时如何处理并发性,特别是在处理WebSocket请求时

如果你看一下这段代码,它显示了一个简单的websocket服务器和共享状态(一个协作绘制应用程序)

您将看到,每个websocket请求都可能修改共享状态,例如painters映射或连接计数器。这段代码是线程安全的吗?如果是(作者证实了这一点),Play2如何在内部处理并发性?不幸的是,目前我还没有足够的Scala级别来完全理解play2库代码

我想知道他们如何在高性能(可以“同时”处理多个请求)的情况下协调线程安全(映射或计数器一次只能由一个线程修改)


我能想到的唯一可行的行为是将每个迭代对象块的处理封装在其自己的线程事务中;这最终严重限制了并发性(尽管简化了用户代码)最终的性能与Node.js或任何单线程服务器提供的性能类似?我可以看到Iteratee编程模型在流媒体、文件处理等方面的好处,但对于WebSocket来说,它的好处并不多,因为每个请求都会触发非平凡的工作(服务器计算、数据库访问等)我对我的应用程序的线程安全性的看法是错误的,它有一个bug

我刚刚使用ConcurrentHashMap修复了它,请参见更改


谢谢你的报告。

我对我的应用程序的线程安全性的看法是错误的,它有一个bug

我刚刚使用ConcurrentHashMap修复了它,请参见更改

谢谢你的报告