Что насчет проблем NIO в Scala / Java

При поиске в сети параллелизма в jvm я обнаружил вопросы о поиске неблокирующей библиотеки ввода-вывода для Scala / Java.

В чем проблема? Если я хочу отправить что-то в файл / сокет, я могу запустить отдельный поток, который выполняет эту работу.

Я знаю, что могут возникнуть проблемы с использованием потоков, основанных на событиях, потому что вся система может быть заблокирована. Но относится ли это к JVM / Scala?

ДОБАВЛЕНО : Поправьте меня, если я ошибаюсь:
Я думаю, что когда вам нужно вызвать некоторую функцию ввода-вывода в асинхронном режиме, она должна перейти в отдельный процесс или системный (тяжелый) поток. Я прав?
Итак - все вопросы о решении такого рода вещей в обычных языках сводятся к созданию и управлению отдельным процессом или потоками. Таким образом, единственное облегчение со стороны языка - это создание некоторого пула потоков, который будет назначен операциям ввода-вывода в асинхронном режиме.

Итак, моя гипотеза такова.
Предложение: Язык X лучше, чем Y, потому что вызов асинхронной операции ввода-вывода не блокирует виртуальную машину неверен, потому что на каждом языке, поддерживающем системные потоки, есть возможность управлять NIO, единственная разница в том, что язык X имеет лучшую поддержку для этого за счет встроенных библиотек / языковых функций.

  1. Является ли эта гипотеза правдой?
  2. Может ли какой-либо язык достичь NIO без поддержки ОС? (через процессы / потоки)
6
задан Robert Zaremba 27 March 2011 в 10:20
поделиться