【问题标题】:How do I guarantee a single GLib Application instance?如何保证单个 GLib 应用程序实例?
【发布时间】:2014-04-15 19:40:26
【问题描述】:

我目前正在编写一个可在 Linux 和 Windows 上运行并使用 GLib 库的程序。当程序由用户运行时,我想确保只有一个程序实例允许运行。如何以不存在任何竞争条件的平台无关方式执行此操作?

我知道 GIO 有一个 Application 类使用 DBus 来处理这个问题,但我不确定它是否可以移植到 Windows 环境或我的葡萄酒测试环境。

【问题讨论】:

    标签: glib


    【解决方案1】:

    GApplication 类使用 GDBus,它可以在 Linux、*BSD、Windows 和 MacOS X 上可靠运行。

    在 Windows 上,第一次使用 GDBus API 连接到会话总线将导致一个新进程产生一个GDBusDaemon 实例;新创建的会话总线的地址将存储在一个命名的互斥体中,并且所有需要该互斥体的新进程都能够连接到同一会话总线。这样就可以在所有平台上重用在会话总线上获取名称的相同机制。

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多