我如何保证单个GLib应用程序实例?

时间:2014-04-15 19:40:27

标签: glib

我目前正在编写一个适用于Linux和Windows的程序,并使用GLib库。当程序由用户运行时,我想确保只允许一个程序实例运行。我怎么能以平台无关的方式做到这一点,也没有任何竞争条件?

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

1 个答案:

答案 0 :(得分:2)

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

在Windows上,使用GDBus API与会话总线的第一个连接将导致生成GDBusDaemon实例的新进程;新创建的会话总线的地址将存储在一个命名的互斥锁中,所有需要该互斥锁的新进程都可以连接到同一个会话总线。通过这种方式,可以在所有平台上重用相同的会话总线上获取名称的机制。