Что это за файл?Зачем вам нужно кормить его с большим количеством потоков?Это зависит от характеристик (я не знаю лучшего слова для этого) использования файла.
Передача файла из нескольких мест по сети (кратко: Torrent-like)
Если вы переносите существующий файл, программа должна
- , как только он узнает размер файла, создайте его с пустым содержимым: thisпредотвращает последующую ошибку нехватки диска (если не хватает места, при создании, перед загрузкой чего-либо), это также помогает повысить производительность;
- , если вы хорошо организовали передачу (и почему бы и нет), каждый поток будет отвечать за отдельную часть файла, таким образом, запись в файл будет отличаться,
- , даже если два потока каким-либо образом выберут одну и ту же часть файла, это не вызовет ошибки, посколькуони записывают одни и те же данные для одних и тех же позиций файла.
Добавление блоков данных в файл (кратко: регистрация)
Если потоки просто добавляются фиксированными илиразличный-Длина информации в файл, вы должны использовать общий поток.Он должен использовать относительно большой буфер записи, чтобы он мог быстро обслуживать клиентские потоки (просто принимая строки) и сбрасывать его из оптимального расписания и размера блока.Он должен использовать выделенный диск или даже компьютер.
Кроме того, может быть несколько проблем с производительностью, поэтому существуют серверов журналирования вокруг, даже дорогие коммерческие.
Чтение и запись случайного времени, случайной позиции (кратко: база данных)
Требуется сложный дизайн, с мьютексами и т. Д. Я никогда не делал такого рода вещи, но я могу представить.Спросите у Oracle некоторые хитрости:)