多线程 – pthread是否提供优于GCD的优点? - 代码日志

多线程 – pthread是否提供优于GCD的优点?

最近学习了Grand Central Dispatch后,我发现多线程代码非常直观(使用GCD)。我喜欢不需要锁(事实上它在内部使用无锁数据结构),而且API非常简单。

现在,我开始学习pthreads了,我不禁要复杂一点了。线程连接,互斥体,条件变量 – 所有这些都不是GCD中必需的,但在pthread中有很多API调用。

pthreads与GCD有什么优势吗?它是否更有效率?是否有正常使用情况,pthread可以做GCD不能做的事情(不包括内核级软件)?

在跨平台兼容性方面,我不太在意。毕竟,libdispatch是开放源代码,苹果已经将其关闭更改作为补丁程序提交到GCC,clang支持闭包,并已经(e.x。FreeBSD),我们开始看到一些非Apple的GCD实现。我最喜欢使用API​​(具体的例子会很棒!)。

这是压倒性的感觉,你正在经历..这正是为什么GCD被发明的。

在最基本的层面上有线程,pthreads是用于线程的POSIX API,因此您可以在任何兼容的操作系统中编写代码,并期望它能够正常工作。 GCD是建立在线程之上(虽然我不知道他们是否真的使用pthreads作为API)。我相信GCD只适用于OS X和iOS – 简而言之,它是主要的缺点。

请注意,大量使用线程并需要高性能的项目实现自己的线程池版本。 GCD允许您避免(重新)第十次发明车轮。

http://stackoverflow.com/questions/2144639/does-pthreads-provide-any-advantages-over-gcd

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:多线程 – pthread是否提供优于GCD的优点?