Какой параллелизм работает с файловой системой Java? - PullRequest
2 голосов
/ 19 февраля 2010

Используя Java IO, создается впечатление, что разветвление нового процесса дает лучшую возможность для процесса B читать данные, записанные процессом A, в файл, чем то, что вы могли бы получить, если поток A записывал в файл, который пытается прочитать поток B в том же процессе).

Кажется, что правила несопоставимы с моделью памяти. Итак, какой файловый параллелизм работает? Ссылки будут оценены.

Ответы [ 2 ]

4 голосов
/ 19 февраля 2010

Любые наблюдения, подобные этой, должны быть привязаны к конкретной операционной системе и могут относиться к различным версиям операционной системы (ядра). То, что вы здесь нажимаете, вероятно, связано с тем, как ОС реализует потоки, и с планированием потоков. Платформа Java мало что настраивает для такого рода вещей.

IMO, если вам нужна лучшая производительность, вам, вероятно, не следует использовать файл в качестве канала передачи данных между двумя потоками в одной JVM. Кодируйте свое приложение, чтобы обнаружить, что потоки расположены в одной и той же JVM, и использовать, скажем, потоки Java Pipe.

0 голосов
/ 19 февраля 2010

Возможно, это может быть связано с блокировкой потоков и процессов.

Когда процессу требуется ресурс (запись / чтение файла), он блокируется, пока SO не выполнит требование и не вернет что-то процессу.

Если вы не используете гиперпоточность , процесс с двумя потоками заблокирует оба потока для полного выполнения каждой из задач.Но если вы разделите их, возможно, SO сможет оптимизировать доступ и лучше парализовать чтение / запись.

(просто догадываясь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...