我有多个进程正在写入 FIFO 文件。当其中一个进程正在写入时,我想阻止其他进程写入该文件。
我正在使用读取和写入调用来访问 FIFO 文件。
示例:有两个 C 程序 Server.c 和 Client.c。多个客户端正在写入服务器程序创建的 FIFO 文件。服务器应该能够随时读取和写入该文件,因为一次只有一个客户端可以访问该文件。
最佳答案
尝试使用锁定机制。尝试并发读取和独占写入机制 (CREW) 实现。
void ReaderThread::run()
{
...
semaphore++;
read_file();
semaphore--;
...
}
void WriterThread::run()
{
...
semaphore += MaxReaders;
write_file();
semaphore -= MaxReaders;
...
}
通过此解决方案,最多可以有 MaxReaders 线程同时读取文件。一旦写入线程想要修改文件,它就会尝试分配所有信号量资源,从而确保在写入操作期间没有其他线程可以访问该文件。
关于C - 阻止其他人写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576484/