首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中跨服务器同步文件处理线程

在linux中跨服务器同步文件处理线程
EN

Stack Overflow用户
提问于 2015-09-09 14:49:10
回答 1查看 44关注 0票数 0

我需要构建一个处理文件的linux服务/守护进程。这个守护进程很可能是多线程的,并且很可能运行在多个节点上。同步所有守护进程的线程的最佳方法是什么,这样就不会有两个线程处理同一个文件?

我想到了几个想法,但不知道是否有更好的方法,因为我刚接触linux。

  1. 创建一个目录结构,以便只有一个守护进程处理一个目录。守护进程本身应该能够轻松地同步其中的线程,这样就不会有两个线程处理同一个文件。
  2. 使用open()和可能的文件属性确定某种机制,这样一旦一个进程在文件处于某种状态时能够成功地独占打开一个文件,也许某个文件属性还没有设置,状态就会被更改,方法是更改某个文件属性,而守护进程可以在其他守护进程不会处理它的情况下处理该文件。
  3. 想出一个命名约定,使名称在某些数字名称之间分布在某种程度上是平等的。然后,可以将每个守护进程配置为处理一些模块号。

示例:文件名= 987654321

我们有一个守护进程运行在两个节点上。每个守护进程的配置将指示守护进程的数量以及守护进程应该处理的模块。因此,一个守护进程将处理模块化值0,而另一个守护进程将处理模块化值1。

987654321 %2= 1,因此它将由守护进程处理模块1处理。

  1. 我想我们可以有一个守护进程,它将工作分配给处理守护进程。处理守护进程可以与这个单独的守护进程进行通信,我将通过某种IPC机制将其称为“工作管理器”。

谢谢,尼克

EN

回答 1

Stack Overflow用户

发布于 2015-09-09 15:27:20

如果要用Python实现逻辑,可以使用python的队列类。它是为多个线程之间交换数据而设计的。

您可以将您的文件和/或目录放在队列中,然后每个线程将访问该队列并获取该文件。这样,线程就永远不会持有相同的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32482789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档