Rom*_*gan 9 parallel-processing frameworks nio scala
我有相当大的文件需要处理(500Meg + zip文件).
Scala的演员是否有任何非阻塞的IO开源实现?
如果我的问题正确,则需要非阻塞IO文件.那时我有个坏消息.
Java6中的Java NIO仅支持在处理文件时的阻塞操作.你可能会注意到这个事实FileChannel
没有实现SelectableChannel
接口.(NIO确实支持套接字的非阻塞模式)
NIO.2(JSR-203)规范旨在克服java.io和NIO的许多当前限制,并为文件上的异步IO提供支持.据我所知,NIO.2将与Java 7一起发布.
这些是Java库限制,因此您在Scala中也会遇到它们.
演员基于Doug Lea的Fork-Join框架(至少在2.7.x分支中直到版本2.7.7).来自FJTask类的一句话:
实际上没有任何东西阻止你在FJTask中阻塞,并且非常短的等待/块完全表现良好.但是FJTasks并不是为了支持任意同步而设计的,因为一旦它们开始执行就无法暂停和恢复它们.FJTasks的持续时间也应该是有限的 - 它们不应该包含无限循环.FJTasks可能需要执行阻塞操作,或持有锁定一段时间,或永远循环,而是可以创建正常的Java Thread对象.FJTasks并不是为了支持这些事情而设计的.
在Scala中增强了FJ库,以提供一种统一的方式,允许actor像线程一样运行,或者像基于事件的任务一样,具体取决于工作线程的数量和"库活动"(您可以在技术报告" 统一线程的Actors中找到解释")和事件 "由菲利普哈勒和马丁奥德斯基".
但毕竟如果你在一个actor中运行阻塞代码,它的行为就像它是一个线程,那么为什么不使用普通Thread
的阻塞读取并从这个线程向基于事件的actor发送事件呢?
归档时间: |
|
查看次数: |
2025 次 |
最近记录: |