【发布时间】:2015-07-15 09:55:18
【问题描述】:
我已经从https://github.com/akka/akka/blob/master/akka-docs/rst/scala/code/docs/io/EchoServer.scala#L96修改了 Echo 服务器
case Received(data) =>
connection ! Write(data, Ack(currentOffset))
log.debug("same {}", sender.eq(connection)) // true
buffer(data)
这意味着传入和传出消息由同一个参与者处理。因此,单个工作线程(从邮箱中获取消息)将处理读写操作。
在“经典”世界中,我可以创建一个线程从套接字读取,另一个线程用于写入并获得同时通信。
【问题讨论】:
-
sockets 是双向的,但是你不能使用不同的线程同时读写。它们不是线程安全的。但是他们支持全双工吗?是的。
-
msdn.microsoft.com/en-us/library/… 套接字是线程安全的。 Java socket 有获取 InputStream 和 OutputStream 的方法,通过不同的线程使用它们是安全的。
-
socket和socket类是有区别的!套接字不是线程安全的。
标签: multithreading scala sockets tcp akka