C内存映射文件与常规文件

时间:2015-04-30 19:00:39

标签: c memory-mapped-files

我正在开发一个实现,其中多个进程读取常规文件A。发生这种情况时,会启动一个新进程P并将内容从A复制到常规文件B。此后启动的所有流程现在都应该读取文件B 要从A切换到B,处理P会在T写入后创建一个临时文件B。所有流程都会检查T是否存在以决定从哪里读取数据(例如,如果A不存在则从T读取,如果{{1}则从B读取存在)。
由于T文件只是一个指标,因此使用内存映射文件而不是常规文件以获得更快的性能会更好吗?

1 个答案:

答案 0 :(得分:1)

使用tmp文件进行同步并不安全。检查,如果文件存在并且读取该文件不是原子的。一个进程可以在另一个进程完成检查后立即切换文件,并即将阅读。

如果您使用C进行开发并允许使用IPC API,则可以在共享内存中设置标志并通过信号量保护它。 此外,这些过程应该表明他们已经完成了阅读。