【发布时间】:2014-04-15 19:40:26
【问题描述】:
我目前正在编写一个可在 Linux 和 Windows 上运行并使用 GLib 库的程序。当程序由用户运行时,我想确保只有一个程序实例允许运行。如何以不存在任何竞争条件的平台无关方式执行此操作?
我知道 GIO 有一个 Application 类使用 DBus 来处理这个问题,但我不确定它是否可以移植到 Windows 环境或我的葡萄酒测试环境。
【问题讨论】:
标签: glib
我目前正在编写一个可在 Linux 和 Windows 上运行并使用 GLib 库的程序。当程序由用户运行时,我想确保只有一个程序实例允许运行。如何以不存在任何竞争条件的平台无关方式执行此操作?
我知道 GIO 有一个 Application 类使用 DBus 来处理这个问题,但我不确定它是否可以移植到 Windows 环境或我的葡萄酒测试环境。
【问题讨论】:
标签: glib
GApplication 类使用 GDBus,它可以在 Linux、*BSD、Windows 和 MacOS X 上可靠运行。
在 Windows 上,第一次使用 GDBus API 连接到会话总线将导致一个新进程产生一个GDBusDaemon 实例;新创建的会话总线的地址将存储在一个命名的互斥体中,并且所有需要该互斥体的新进程都能够连接到同一会话总线。这样就可以在所有平台上重用在会话总线上获取名称的相同机制。
【讨论】: