问题:WEB进行文件的配置,Linux服务对配置进行读取。在这里我们面临的问题是读写之间的同步问题。当一个进程对文件进行写入,一个进程对文件进行读取,如果同时访问到一个位置,导致系统崩溃。当初这里有一个初步的同步方案:当WEB进程修改配置,创建一个文件,标志当前的配置不可用。当linux服务检测到文件的存在,当前不会读取配置,直到检测到该文件不存在,重新配置文件。
这里存在一个问题:二元信号量的问题。当你检测到信号量存在的情况下,准备对信号量进行加锁,如果这个时候由于中断的原因,出现了进程被挂起,另一个进程恰巧执行到这一步,将会导致读写的异常。
其实也可以通过一个技巧来简单的实现:尝试创建管道(这里有一篇文章描述管道),如果管道存在,停止读取文件,如果不存在,创建管道,读取文件。
时间: 2024-10-26 19:00:41