最近学习了Grand Central Dispatch,发现使用GCD进行多线程编程非常直观。我喜欢它不需要使用锁(以及它在内部使用无锁数据结构),并且API非常简单。
现在,我开始学习pthread,但是我感到有些不知所措。线程join、互斥锁和条件变量-所有这些都不需要在GCD中使用,但在pthread中有很多API调用。
pthread相对于GCD提供了优势吗?它是否更高效?是否有正常的使用情况,其中pthread可以做GCD无法做到的事情(排除内核级软件)?
就跨平台兼容性而言,我并不太担心。毕竟,libdispatch是开源的,苹果已将其闭包更改提交为GCC的补丁,clang支持闭包,并且已经(例如FreeBSD)开始看到一些非苹果的实现GCD。我主要关注API的使用(具体示例将非常棒!)。