我需要构建一个处理文件的linux服务/守护进程。该守护进程很可能是多线程的,并且很可能在多个节点上运行。什么是同步所有守护进程的线程的最佳方法,这样两个线程没有处理同一个文件?
我想到了一些想法,但想知道是否有更好的方法,因为我是Linux新手。
创建一个目录结构,以便只有一个守护程序处理目录。守护进程本身应该能够轻松地同步其中的线程,以便没有两个线程处理同一个文件。
使用open()和文件属性确定一些机制,这样一旦进程可以在文件处于某种状态时专门成功打开文件,可能还有一些文件属性尚未设置,状态会被更改,更改一些文件属性,该守护进程可以处理该文件,因为知道没有其他守护进程可以处理它。
提出一个命名约定,使得名称在某个数字名称上分布均匀。然后可以将每个守护进程配置为处理一些模数。
示例:文件名= 987654321
我们在两个节点上运行守护进程。每个守护程序的配置将指示守护程序的数量以及守护程序应处理的模数。因此,一个守护进程将处理模数值0,另一个守护进程将处理模数值1.
987654321%2 = 1因此它将由守护程序处理模1进行处理。
谢谢, 尼克