问:Mac OS X pthreads 和 GCD,在 GCD 中寻找等效的 rwlock

Q: Mac OS X pthreads and GCD, looking for rwlock equivalent in GCD

我正在维护一些在 Windows 和几个 UNIX 平台上运行的软件:Mac、Linux、AIX 和 Solaris。它在 pthread 或 Win32 线程之上实现了线程基础结构。我开始在此基础架构中实施 rwlocks,以便我们的开发人员可以使用它们。到目前为止,一切都很好。

在Mac OS X 上,我们最初使用普通pthreads 实现线程,但发现性能很差,因为OS X pthreads mutexes 总是进行系统调用。 Apple 推荐我们使用 GCD dispatch semaphores,这工作得很好,性能有了相当大的提升,因为如果信号量是空闲的,等待信号量是一个简单的用户空间操作。

但是,我看不出有什么方法可以做与 rwlocks 等效的事情,而且就简单的信号量而言,这看起来是不可能的。我错过了什么,还是这实际上是不可能的?

注意:将所有内容都切换到使用队列和块的 GCD 方法是不可行的。代码必须在没有 GCD 的平台上运行,并且在大约 170 个源文件中重写线程基础结构的所有用法是不切实际的。

傻我,应该先查维基百科。那里有 several ways 可以做。这是一个标准的计算机科学问题:不完全微不足道,但很好理解。