過去数か月の間に、iOS開発を行っている間、 ObjectiveCでデフォルトで提供されるいわゆるGrandCentralDispatchテクノロジーの使用に非常に慣れました。いくつかの簡単な呼び出しで、次のような素晴らしいことができます。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// Do stuff on the lowest priority queue here
dispatch_async(dispatch_get_main_queue(), ^{
// Do stuff with the above results here back in main thread/queue
});
});
基本的に、カスタム優先度の他のスレッドのタスクを好きなときにフォークオフでき、スレッド間でオブジェクトを渡したり、スレッドを終了したり、結合したりするのにそれほど労力をかけることなく、結果を好きなように使用できます。ウィキペディアにとって、そのアプローチのより一般的な名前は「スレッドプールパターン」です。
並列処理の実現に関する限り、これは私が過去に使用した他の多くのソリューションよりも簡単だと思います(pthreadを考えていますが、ほとんどの言語で類似したものがあります)。「使いやすさ」の大部分は、iOSアプリ(OSXも?自分で作成したことはありません)がスレッドごとに実行ループとタスクキューを使用するため、作業を何かではなく個別のユニットに分離できるようになるという事実に由来すると思います。通常、ほとんどの言語では、空白のプログラムスケルトンから始めます。
したがって、問題は、他の言語のGCDのようなものがあるのか、それともAppleの世界の外で人気のあるモデルではないのかということです。私はClojure/JVMに特に興味があります。これは、おそらく類似している可能性のある並列化の抽象化を追加するためですが、他の言語についても同じことを知りたいと思います。