【问题标题】:Concurrency of processes for mutex互斥量的进程并发
【发布时间】:2018-01-18 06:10:46
【问题描述】:

我必须编写一个守护进程来决定互斥锁的访问策略(如果多个进程在任何条件下想要相同的互斥锁,它会确定哪个进程获得互斥锁)

为此,我建立了一些代码:L 1 231 (LOCK mtx_id process_pid)。 当一个进程请求一个互斥体时,它会在共享内存区域上写入一些类似于上面的代码。 守护进程读取它。 (对于每个互斥体,我都有一个进程等待获取它的队列。)将进程 pid 放入队列中。 如果已解锁,则弹出队列,给互斥体。(写入共享内存id_mutex和获得它的pid的进程,以供其他进程读取并知道谁拥有互斥体。

我的问题是:更多进程如何请求相同的互斥锁?首先创建它们并手动选择请求的进程似乎不是一个好选择。

感谢您的帮助。谢谢

【问题讨论】:

  • 互斥锁需要守护进程吗?为什么要这么做?不能只使用状态数据吗?
  • ..此外,“当进程请求互斥体时,它会在共享内存区域上写入” - 写入将需要互斥体。
  • ...和'写入共享内存 id_mutex 和获得它的 pid 进程,以便其他进程读取并知道谁拥有互斥锁' 为什么其他进程会关心?

标签: concurrency operating-system mutex daemon


【解决方案1】:

许多操作系统都有一个可以按名称存储的操作系统对象的容器、目录、目录或注册表。一旦存储在容器中,就可以通过名称查找它们并返回一个引用令牌。然后可以使用该令牌访问该对象。

像进程间互斥锁这样的同步对象将是存储在容器中的理想选择。然后多个进程可以按名称查找互斥锁并使用它。

此类编目对象通常是引用计数的,因此它们仅在带有令牌的最后一个进程要求关闭时才被销毁。

顺便说一句 - 请参阅 cmets,您的设计成功......有问题:(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2011-06-24
    相关资源
    最近更新 更多