Мое приложение является многопоточным (pthread) приложением c / c ++.
По некоторым причинам я должен позвонить sync()
с unistd.h
(вызов синхронизации будет блокироваться до нескольких секунд)
Другой поток выполняет некоторые операции с файловой системой. (fopen, fwrite, переименование и т. д.)
Что я видел, так это то, что операции файловой системы блокируются на некоторое время, пока выполняется команда sync()
.
По каким причинам блокируются другие операции с файловой системой?
Конечно, синхронизация будет синхронизировать буферы с диском. ИМХО записи в файловую систему заблокированы при синхронизации. Правильно?
Что меня интересует: Какие звонки заблокированы? Файловые операции в одной файловой системе? Все файловые операции? Все функции основаны на системных вызовах Linux? Как насчет записи / чтения на таких устройствах, как /dev/ttyUSB0
?