Там кто-либо не блокирует реализацию с открытым исходным кодом IO для агентов Scala?

Версия с открытым исходным кодом (лицензия BSD) strptime() может быть найдена здесь: http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/time/strptime.c?rev=HEAD

необходимо будет добавить следующее объявление для использования его:

char *strptime(const char * __restrict, const char * __restrict, struct tm * __restrict);

9
задан Matthew Murdoch 7 October 2009 в 14:47
поделиться

4 ответа

If I got your question right, you need non-blocking IO for files. I have bad news for you then.

NIO

Java NIO in Java6 supports only blocking operation when working with files. You may notice this from the fact FileChannel does not implement SelectableChannel interface. (NIO does support non-blocking mode for sockets however)

There is NIO.2 (JSR-203) specification aimed to overcome many current limits of java.io and NIO and to provide support for asynchronous IO on files as well. NIO.2 is to be released with Java 7 as far as I understand.

These are Java library limits, hence you will suffer from them in Scala as well.

Actors

Actors are based on Fork-Join framework of Doug Lea (at least in branch 2.7.x till version 2.7.7). One quote from FJTask class:

There is nothing actually preventing вы от блокировки в рамках FJTask, и очень короткие ожидания / блоки полностью хорошо себя ведет. Но FJTasks не предназначен для поддержки произвольных синхронизация, так как нет возможности приостанавливать и возобновлять отдельные задачи как только они начали выполняться. FJTasks также должны быть конечными в продолжительность - они не должны содержать бесконечные петли. FJTasks, которые могут необходимо выполнить блокирующее действие, или удерживать замки в течение длительного времени, или цикл навсегда может вместо этого создать нормальный java Thread, которые будут делать это. FJTasks просто не предназначены для support these things.

FJ library is enhanced in Scala to provide a unified way permitting an actor to function like a thread or like an event-based task depending on number of working threads and "library activity" (you may find explanation in technical report "Actors that unify Threads and Events" by Philipp Haller and Martin Odersky).

Solution?

But after all if you run blocking code in an actor it behaves just like if it being a thread, so why not use an ordinary Thread for blocking reads and to send events to event-based actors from this thread?

6
ответ дан 4 December 2019 в 21:50
поделиться

Not that I know of, but you could probably get a lot of mileage out of looking at Naggati, a Scala wrapper around Apache Mina. Mina is a networking library that uses NIO, Naggati translates this into a Scala style of coding.

1
ответ дан 4 December 2019 в 21:50
поделиться

Вы говорите об удаленных актерах? Стандартный Актер , конечно же, является объектом внутри JVM. Боюсь, что я не знаю о реализации удаленных участников NIO.

1
ответ дан 4 December 2019 в 21:50
поделиться

Здравствуйте, это вариант для вас? bigdata (R) - это горизонтально масштабируемая структура хранения и вычислений, поддерживающая необязательные транзакции, очень высокий уровень параллелизма и очень высокую совокупную скорость ввода-вывода.

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

1
ответ дан 4 December 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: