代码之家  ›  专栏  ›  技术社区  ›  Roman Starkov

使用命名互斥体的存在作为指示符是一个好主意吗?

  •  4
  • Roman Starkov  · 技术社区  · 16 年前

    我正在使用一个命名的mutex来检测我的应用程序的其他实例并相应地退出,发现有两种方法可以做到这一点:

    1. 创建互斥;忽略是否已经存在的指示;努力获得它;使用获取成功/失败的事实。
    2. 创建互斥;使用是否已经存在的指示。

    3 回复  |  直到 16 年前
        1
  •  2
  •   John Knoeller    16 年前

    例如,您可以使用互斥锁,直到退出初始化代码。这样一次只能初始化一个程序实例。如果您在打开互斥锁之后获取它,那么首先获取互斥锁的人就知道它的init代码中没有其他实例。但更重要的是 没有 完成 初始化。

        2
  •  0
  •   Seb    16 年前

    我不确定,但命名的互斥锁可能仍然存在,如果程序崩溃,并没有正确终止。如果是这样,存在性测试将成功,而没有其他实例正在运行。因此,我个人更愿意尝试获得它;-)

        3
  •  0
  •   Pentium10    16 年前

    #听起来你应该这样做。

    因为您的应用程序启动代码可能会执行两次(在简历或类似的操作系统上),即使mutex已经存在,因为它是由相同的应用程序id创建的,获取也会成功。