Название: Чтение и запись в файл в разных потоках Отправлено: demaker от Сентябрь 08, 2021, 21:06 Всем доброго времени суток!
Встал вопрос чтения и записи в разных потоках. Ответ кажется очевидным. Берем файл мьючим его и читаем в одном потоке, а в другом пишем. Но это кажется как-то не очень хорошей идей. Может есть какой-нибудь варинт асинхронного чтения и записи? Название: Re: Чтение и запись в файл в разных потоках Отправлено: Igors от Сентябрь 09, 2021, 06:41 Но это кажется как-то не очень хорошей идей. А почему?Может есть какой-нибудь варинт асинхронного чтения и записи? Не вижу откуда им взяться. Ну если неск "читателей", то ReadWriteLock - но здесь и это не проходит т.к. каждому нужна своя позиция в файлеНазвание: Re: Чтение и запись в файл в разных потоках Отправлено: demaker от Сентябрь 09, 2021, 07:37 Но это кажется как-то не очень хорошей идей. А почему?Может есть какой-нибудь варинт асинхронного чтения и записи? Не вижу откуда им взяться. Ну если неск "читателей", то ReadWriteLock - но здесь и это не проходит т.к. каждому нужна своя позиция в файлеЧитаем из файла блоки информации определенного размера. Пишем естественно только в конец файла. Поток на чтение Код:
Код:
Стоит ли открывать и закрывать файл в потоках? Название: Re: Чтение и запись в файл в разных потоках Отправлено: Igors от Сентябрь 09, 2021, 08:50 Пишем естественно только в конец файла. Это проще но не так уж естественно Стоит ли открывать и закрывать файл в потоках? Ни в коем случае. Файл должен быть открыт один раз по чтению-записи. Название: Re: Чтение и запись в файл в разных потоках Отправлено: Fregloin от Сентябрь 15, 2021, 13:53 Можно задействовать файловые потоки. Не уверен, что можно натравить два потока на один файл..
Название: Re: Чтение и запись в файл в разных потоках Отправлено: Vidos от Октябрь 26, 2021, 19:14 Сдаётся мне, что вы всё усложняете.
У файла, в один момент, может быть только одна позиция чтения/записи. Никак не получится одновременно читать кусок данных от куда-то с одной позиции и писать данные в другую позицию. По этому, это однозначно глухая блокировка файла в момент чтения/записи. По этому задача делится на две части: фоновая работа с данными, после того как данные обработаны (подготовлены), запись в файл в файл с его блокировкой. Название: Re: Чтение и запись в файл в разных потоках Отправлено: Old от Октябрь 26, 2021, 19:18 У файла, в один момент, может быть только одна позиция чтения/записи. Да ну перестаньте, одна. :)Попробуйте сами, открыть один файл из разных потоков и читать по случайным смещениям. Или в один поток, но запустите несколько процессов, которые будут читать один файл. Название: Re: Чтение и запись в файл в разных потоках Отправлено: Vidos от Октябрь 26, 2021, 20:28 У файла, в один момент, может быть только одна позиция чтения/записи. Да ну перестаньте, одна. :)Попробуйте сами, открыть один файл из разных потоков и читать по случайным смещениям. Или в один поток, но запустите несколько процессов, которые будут читать один файл. Ну, если так пересмотреть задачу, то я с вами полностью согласен. :) Параллельное чтение из одного файла разными процессами вполне нормально. Но я исходил из текущей задачи - несколько потоков, чтение-запись, один объект файла. А тут уже другие подходы требуется. ;) |