Я собираюсь реализовать базу данных только для добавления, способную к одновременной записи. Как утверждает POSIX, и, согласно моим исследованиям, write(2)
для файла, открытого с флагом O_APPEND
, гарантирует запись данных в конец файла без чередования с параллельными потоками записи. Но после записи фрагмента данных мне нужно сказать, с какого смещения были записаны данные. Просто получить текущий размер файла с помощью stat или текущий указатель записи с помощью lseek(2)
кажется неправильным, так как это может повлиять на число одновременно работающих авторов. Есть мысли, как это сделать без блокировки?