LoginSignup
5
6

More than 5 years have passed since last update.

GCD (Grand Central Dispatch)の他OSへの最新移植状況

Last updated at Posted at 2015-10-13

以前、こんな記事を書きました。

今でも上記は使えると思います。ただ、上記で紹介しているXDispatchは長らく更新されていません。

更新が途絶えたライブラリは、ある意味生きているとは言えません(将来的な意味で)

そこで、現在他の方による移植物がないか、探してみました。

見つけたのがこちら

Linux移植版:https://github.com/nickhutchinson/libdispatch
Windows移植版:https://github.com/DrPizza/libdispatch

実用性について

それぞれ、まだ私はちゃんと実際に試して検証等していません。
Linux移植版とWindows移植版はそれぞれ別の方が開発されているため、
以前の記事のように、Mac/Linux/Windows間で完全に同一コードを共有できるかもまだわかりません。

そもそも、それらの移植版のメンテナンスがいつまで続くかも、それはもうその作者さんの意志次第なので、なんともいえないですね。

っていうか、マルチプラットフォームGCDは世から求められているのだろうか?

マルチスレッドプログラミング・並列処理においてよく起きる問題を低減するマルチOSプラットフォームソリューションは、GCDだけではありません。

  • Javaにおけるjava.util.concurrent
  • Scalaのアクター並列コレクション
  • C/C++におけるOpenMPや、未来のC++標準C++17におけるParallelSTL

それぞれプログラミングにおけるアプローチが違うので、単純な比較はできませんが、これだけあるわけですね。

そもそも、本家Apple版GCDの利点は、スレッドプールをOSXが適切に管理することによって、OS全体で最高のパフォーマンスを出すことがメリットの一つだったわけで、LinuxやWindowsへの移植版が、そこまで高度な統合を果たしているかも未知数です。

そして、業界のトレンドとしては、関数プログラミングへの志向&マルチスレッドモデルからActorモデルへの移行が進んでいます。

さらに、OpenCLやらOpenACCなど、GPGPU系なども考えるともう、色々過渡期っすね。なんかオイラ、ようけわからなくなってきたよw

まとめ

ちょっと風呂敷を広げすぎましたが、少なくともこういうことは言えそうです。

  • iOS/Macでの開発においてGCDを多用する人にとっては、LinuxとWinで同じ作法が使える、移植版の存在は魅力的ではないか。
  • それ以外の人にとっては、C++11でクロスプラットフォームになった<thread>OpenMP、C++17でのparallelSTL(これについては、実用できるのは相当先ですが)など、他のソリューションの方があっているかも。

なんか、それぞれアプローチの違う色んなソリューションを引っ張ってきたから、単純な比較もできないし、そもそも各ソリューションのベンチマークもしてないじゃんという、突っ込みどころ満載の手抜き記事になってしまいましたが、まぁ「マルチプラットフォームでワンソースで並列処理」という夢に一番近いソリューションは何か、というのを色々検討するのはそれなりに意義あることでは・・・ない・・・カナ?カナ?

という感じで無理やり締めて、そろそろビールの酔いが回ってきたので寝ますw(←夜酒しながら書いてた)

5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6