Re[6]: mmap асинхронная запись
От: valuea  
Дата: 01.08.14 08:04
Оценка:
W>Ну то есть обычный shadow paging?
Да, похоже. Буду знать как по научному называется.

W>Погоди-ка. Так ты всё-таки хочешь чтобы программа переживала внезапные сбои вроде пропадания электроэнергии, kernel panic, выхода из строя разного оборудования, вот это вот всё?

W>То есть управление порядком записи на диск нужно лишь для повышения вероятности, что после сбоя ОС (вроде внезапной перезагрузки) там окажется консинстентная структура. Если с этим нужно бороться, то да, синхронная синхронизация будет нужна.
Именно, но при этом не хотелось-бы вынуждать вызвающую сторону дожидаться окончания записи данных на диск, тем более при каждом новом вызове запись произоводится поочередно в различные участки файла, которые между собой не пересекаются. При этом не очень хочется создавать отдельный поток (дабы не держать поток вызывающей стороны), который занимался бы такой последовательной синхронизацией, а как раз таки переложить эту задачу "на плечи" ОС, что то типа асинхронную записи, но с выполнением условия последовательности. Если без отдельного потока не получитя, насколько я понимаю нужно будет копать в сторону kqueue (да, таки исключительно под FreeBSD).

W>а комбинация FreeBSD+ftruncate+MAP_NOSYNC вообще способна подвесить систему на несколько часов при неудачном стечении обстоятельств.

Да, как раз мой случай, только сейчас обратил внимание на предупреждение man-а.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.