我有一个在Citrix环境中运行的应用程序。 该应用程序可以由多个用户在不同的用户会话中同时运行。 在我的应用程序中,我正在写一个应该在所有用户会话中互斥的文件。 我尝试互斥,以避免写入不同用户会话的文件,但使用互斥失败,因为在某些情况下,不同的用户会话无法检测互斥对象是否已经创build。
任何人都可以告诉我下面哪个方法更好地实现所有用户会话中的互斥:
使用命名pipe道:如果命名pipe道已经存在,那么应用程序将等待pipe道被打开的应用程序实例closures。 否则,创build命名pipe道来表示获取锁。
使用locking文件:在磁盘上创build一个正常的文件,以指示当需要完成解锁时获取locking和删除。
当您通过调用CreateFile()来打开文件时,您将确定共享访问权限,以便随后尝试使用dwShareMode参数打开该文件。 例如,将其设置为0,其他进程将无法打开文件。