最近GrandCentralDispatchを学んだので、マルチスレッドコードが(GCDを使用して)非常に直感的であることがわかりました。ロックが不要であるという事実(および内部でロックレスデータ構造を使用するという事実)、およびAPIが非常に単純であるという事実が気に入っています。
今、私はpthreadを学び始めており、その複雑さに少し圧倒されざるを得ません。スレッド結合、ミューテックス、条件変数-これらすべてはGCDでは必要ありませんが、pthreadでは多くのAPI呼び出しがあります。
pthreadはGCDに勝る利点を提供しますか?それはより効率的ですか?pthreadがGCDでは実行できないこと(カーネルレベルのソフトウェアを除く)を実行できる通常のユースケースはありますか?
クロスプラットフォームの互換性に関しては、私はあまり心配していません。結局のところ、libdispatchはオープンソースであり、Appleはクロージャの変更をGCCへのパッチとして置き換え、clangはクロージャをサポートしており、すでに(FreeBSDを除く)、Apple以外のGCDの実装がいくつか見られ始めています。私は主にAPIの使用に興味があります(特定の例は素晴らしいでしょう!)。