Re: Заменить файл в zip-архиве без создания временных файлов
On Fri, Mar 06, 2009 at 12:02:09AM +0300, Alexey Pechnikov wrote:
> Hello!
>
> On Thursday 05 March 2009 23:37:38 Иван Лох wrote:
> > > А можно синхронизировать доступ из многопоточного приложения? Создал
> > > канал content.xml и теперь нужно сделать так, чтобы поток А записал
> > > данные и запустил zip для замены файла в архиве, и только после этого
> > > поток Б смог записать свои данные и вызвать zip. Собственно, это на
> > > уровне приложения легко решается, но вдруг все уже придумано до нас.
> >
> > Блокировку на файл архива поставить?
>
> Это как? Создавать файлик ".lock" потребует лишних операций с диском да и если
Ядро Linux (и любого UNIX) содержит, по крайней мере, один механизм блокировок файла.
man 2 flock
man flock
man 2 fcntl
> Там написано, что есть именованные каналы. Но особенных рекомендаций по
> применению как-то не видел. Ну, для админов что-то было, но для разработчиков
> не встречал подсказок. Книжки-то давно написаны, когда еще не было таких
> огромных объемов ОЗУ доступно, как сейчас, когда чем больше ОЗУ используешь,
> тем лучше, т.к. при минимуме записи можно обойтись огромными дешевыми SATA-
> дисками (из которых уже из зеркальный рэйд недорог, вот чудеса).
Как раз книжки написаны в те времена когда создание временного файла влекло
существенный оверхед, из-за того, что памяти было мало и не было tmpfs. В то
время именованные каналы использовались очень широко.
Reply to: