[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: