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