1

假设我在 Mac OS X 上创建了几个使用一个共享资源或服务的应用程序。在我的应用程序中,我想检查服务或资源是否已经以与 Windows 上使用的命名互斥锁相同的方式创建,以免在任何地方创建它。在 Cocoa 中最好的方法是什么?

4

2 回答 2

2

如果您想要做的只是控制对共享资源的访问,常见的 Unix/OS X 可能是创建和锁定文件 - 该文件可以是零字节长。

这样做的系统级方法是使用flock(手册页第 2 节),C 级方法是使用 stdio flockfile(手册页第 3 节),我认为所有框架级方法都已被弃用,但我可能会错误(Apple 似乎正在更改文件系统操作的支持方式,但在提供替换之前已经弃用了一些)。

注意:文件锁定与 Finder 级锁定不同 - 前者为您提供互斥锁,后者与防止修改有关。

于 2013-04-09T05:11:04.767 回答
1

命名互斥锁的最直接模拟是 POSIX 信号量。从sem_open()的手册页开始。

于 2013-04-09T05:35:55.360 回答