首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有针对Scala参与者的非阻塞IO开源实现?

有没有针对Scala参与者的非阻塞IO开源实现?
EN

Stack Overflow用户
提问于 2009-10-02 22:18:38
回答 4查看 2.1K关注 0票数 9

我有相当大的文件需要处理(500Meg+压缩文件)。

有没有针对Scala参与者的非阻塞IO开源实现?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-06 07:40:51

如果我没弄错你的问题,你需要文件的非阻塞IO。我有个坏消息要告诉你。

NIO

Java6中的Java NIO在处理文件时只支持阻塞操作。您可以从FileChannel不实现SelectableChannel接口的事实中注意到这一点。(不过,NIO确实支持套接字的非阻塞模式)

NIO.2 (JSR-203)规范旨在克服java.io和NIO的许多当前限制,并为文件上的异步IO提供支持。据我所知,NIO.2将与Java7一起发布。

这些都是Java库的限制,因此在Scala中也会受到限制。

演员

Actor基于Doug Lea的Fork-Join框架(至少在分支2.7.x到version 2.7.7)。引用FJTask class的一句话

实际上没有什么能阻止你在FJTask中阻塞,而且非常短的等待/阻塞是完全正常的。但是FJTasks并不是为了支持任意同步而设计的,因为一旦任务开始执行,就没有办法暂停和恢复它们。FJTasks的持续时间也应该是有限的--它们不应该包含无限循环。可能需要执行阻塞操作、长时间持有锁或永远循环的FJTasks可以创建将执行此操作的普通java Thread对象。FJTasks的设计就是不支持这些东西。

FJ库在Scala中得到了增强,提供了一种统一的方式,允许参与者根据工作线程的数量和“库活动”(你可以在Philipp Haller和Martin Odersky的技术报告"Actors that unify Threads and Events“中找到解释)像线程或基于事件的任务一样工作。

解决方案?

但毕竟,如果你在参与者中运行阻塞代码,它的行为就像是一个线程,那么为什么不使用一个普通的Thread来阻塞读取并从这个线程向基于事件的参与者发送事件呢?

票数 6
EN

Stack Overflow用户

发布于 2009-10-03 17:22:27

你是在说远程演员吗?标准的Actor当然是一个内部的JVM虚拟机实体。恐怕我不知道远程参与者的NIO实现。

票数 1
EN

Stack Overflow用户

发布于 2009-10-05 19:14:21

你好,这是你的选择吗?bigdata(R)是一种横向扩展存储和计算结构,支持可选事务、非常高的并发性和非常高的聚合IO速率。

http://sourceforge.net/projects/bigdata/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1512066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档