В моей программе я держу два файла, открытых для записи, контент-файл, содержащий куски данных, и индексный файл, содержащий карту, над которой были записаны фрагменты данных.Есть ли способ posix для обеспечения того, чтобы два файла были сброшены последовательно, без блокировки?
Я хотел бы поместить их обоих на диск, насколько это возможно, с единственным ограничением, которое блоки в файле данных должны быть записаны перед соответствующими блоками в файле карты (естественно).
Уловка заключается в том, что я хотел бы избежать блокировки I.E. делая fsync, как для латентности, так и для пропускной способности.
Любые идеи?
Извините, по какой-то причине SO не сказал мне, что у меня был ответ, и до сих пор не помню этот вопрос. Это интересное решение, я думаю, что попробую. Это очень хорошо, так как у меня есть пул активов, которые иногда нужно синхронизировать с диском, и конструировать писательский поток для циклического объединения пула, блокировки и клонирования индекса, блокировки релиза, fsync-ресурса и последующей перезаписи индекса, звучит достаточно просто, спасибо! Я не знаю ни одной существующей базы данных, соответствующей моему использованию. «Объекты» - это капли от ~ 1 МБ -> 15 ГБ, требующие доступа в стиле pread(). – Rawler