问:Mac OS X pthreads和GCD,寻找GCD中的rwlock等价物

时间:2016-07-18 11:25:18

标签: multithreading macos pthreads grand-central-dispatch

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

在Mac OS X上,我们最初使用普通的pthread实现了线程,但发现性能非常差,因为OS X pthreads互斥锁总是进行系统调用。 Apple建议我们使用GCD调度信号量,这样做效果很好,性能也有相当大的提升,因为如果信号量是空闲的,等待信号量是一个简单的用户空间操作。

但是,我看不出任何方法可以做相当于rwlocks,并且就简单的信号量而言,它看起来是不可能的。我错过了什么,或者这实际上是不可能的?

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

1 个答案:

答案 0 :(得分:0)

傻我,应该先检查一下维基百科。那里有several ways。这是一个标准的计算机科学问题:不是完全无关紧要,但是很容易理解。