У меня есть один вариант использования, когда мои несколько потоков записывают данные в один и тот же файловый канал (объединяются), и каждый поток имеет смещение в файле, с которого они могут начать запись, до длины данных, которые будут записаны.Поэтому, когда я запрашиваю канал файла из пула, он открывает канал в режиме «rw», если он уже не открыт, и возвращает этот канал файла (открытый файл может быть новым файлом, то есть size = 0), иначе он вернет кешированный канал.,Проблема в том, что поток может записывать данные ни в каком конкретном случае, то есть поток со смещением 1 000 000 может начать запись до потока со смещением 0. Предположим, я открыл новый файл (размер = 0), а поток со смещением = 1 000 000 начинает запись данных (используяwrite(buffer, position)
API) перед потоком со смещением = 0.
Мой первый вопрос: разрешено ли это вообще, или я получу какое-то исключение? Во-вторых, если это разрешено: что является гарантией того, что мои данные записаны правильно.В третьих.Когда мой (смещение = 1 000 000) будет завершен с записью в файл, каким будет содержимое в пустом пространстве (0-999 999).Как операционная система будет выделять это промежуточное пространство?