如何为单实例Python应用创建互斥锁

0 投票
1 回答
3844 浏览
提问于 2025-04-17 04:21

我一直在使用以下方法来确保我的应用程序只能运行一个实例:http://code.activestate.com/recipes/474070-creating-a-single-instance-application/

这个方法使用了一个叫“mutexname”的变量,这个变量里存放了一些互斥量的值。如果我想创建一个自己独特的“互斥量”,我该怎么做呢?另外,这个方法是怎么工作的?有没有人能解释一下?

谢谢

1 个回答

2

这个方法使用了win32 api中的一个函数CreateMutex来创建一个有名字的互斥锁。互斥锁是一种系统对象,它存在于你的应用程序进程之外。当你用一个已经存在的名字调用CreateMutex时,GetLastError会返回ERROR_ALREADY_EXISTS,意思是这个名字已经被占用了。这个方法会检查这个返回值,如果是这样就会退出。你应该把这个方法改成使用一个不同的名字来创建互斥锁。选择一个不太可能被别人使用的名字,因为如果别人锁住了这个名字,你的应用程序就无法启动了。

撰写回答