我正在开发一个实现,其中多个进程读取常规文件A
。发生这种情况时,会启动一个新进程P
并将内容从A
复制到常规文件B
。此后启动的所有流程现在都应该读取文件B
要从A
切换到B
,处理P
会在T
写入后创建一个临时文件B
。所有流程都会检查T
是否存在以决定从哪里读取数据(例如,如果A
不存在则从T
读取,如果{{1}则从B
读取存在)。
由于T
文件只是一个指标,因此使用内存映射文件而不是常规文件以获得更快的性能会更好吗?
答案 0 :(得分:1)
使用tmp文件进行同步并不安全。检查,如果文件存在并且读取该文件不是原子的。一个进程可以在另一个进程完成检查后立即切换文件,并即将阅读。
如果您使用C进行开发并允许使用IPC API,则可以在共享内存中设置标志并通过信号量保护它。 此外,这些过程应该表明他们已经完成了阅读。