首页 > 解决方案 > sync() 调用是否会阻止所有 write()/read()/fwrite()/... 调用?

问题描述

我的应用程序是一个多线程 (pthread) c/c++ 应用程序。

出于某些原因,我必须打电话sync()unistd.h调用同步会阻塞几秒钟)

另一个线程执行一些文件系统操作。(fopen、fwrite、重命名等)

我所看到的是文件系统操作在sync()命令运行时被阻止了一段时间。

什么原因,为什么其他文件系统操作被阻止?当然 - sync 会将缓冲区同步到磁盘。恕我直言,同步时阻止写入文件系统。正确的?

我感兴趣的是:哪些电话被阻止了?同一文件系统上的文件操作?所有文件操作?所有函数都基于 Linux 系统调用?在像这样的设备上写/读/dev/ttyUSB0呢?

标签: c++linuxfile-iosystem-calls

解决方案


推荐阅读