注:質問はスタックオーバーフローフォーラムには適さないと見なされており、ここに投稿する必要があったため、これは再投稿です。元のトピックはあります。
その作業を実現するために、マルチスレッド、並列処理、および現在利用可能なライブラリについてお話ししたいと思います。特に、この概念を実現するための使いやすいライブラリ(以下を参照)が既に存在するのか、それとも作成する必要があるのか、そしてそれがどれほど難しいのかについて疑問に思っています。
私が探しているライブラリの目的:
- エンジニアや高卒者だけでなく、ほとんどの開発者がアクセスできます(これは、開発者がそれを恐れずに使用したいことを意味します)。
- C ++開発者が利用可能
- ポータブル(Windows、Mac OS X、Linuxから始めて、モバイルデバイスに拡張)
- 軽量
- 使いやすい(アクセシビリティに関連)
私が探している最も重要な機能:
- タスクの並列処理
- タスクのキャンセル(ソフトで突然の方法)
- タスクの依存関係
既存の関連ライブラリ:
- スレッドビルディングブロック:使用が非常に複雑で、制限のあるライセンス(GPL /商用)、これは私が見つけた唯一のライブラリで、探しているすべての機能が含まれています
- Grand Central Dispatch:現在移植性がなく、複雑すぎず、タスクのキャンセルなし(開始後)、タスクの依存関係なし、自動依存関係サポートなし(手動のみ)
- PFunc:Unixのみ、まだ少し複雑、タスクの依存関係なし、タスクのキャンセルなし
- Microsoft Task Parallel Library:MSプラットフォームと.NETのみ、ハードキャンセルなし、制限された手動のタスク依存関係(1つのタスクが他の複数のタスクを起動することはできません)
- OpenCL:現在、すべてのプラットフォームで使用できるわけではありません。GPU並列タスクライブラリほどではありません(希望するほど高レベルではありません)。
- OpenMP:Visual Studioの無料バージョンを除いて広くサポートされており、タスクのキャンセルや自動タスクの依存関係はありません
これらすべてについてどう思いますか?これらのニーズに対応するライブラリが少ないのはなぜだと思いますか?それとも私はいくつかの素晴らしい図書館を見逃しましたか?そして、それはそれを達成するにはあまりにも多くの仕事を意味すると思いますか?それとも十分に面白くないですか?私が書いた不足は、いくつかの検索で判明したものであり、私はこれらのライブラリの専門家ではありません。
このライブラリの最終的な目的は、たとえそれが夢であったとしても、シーケンシャルプログラミングで通常行うのと同じくらい簡単に並列化された方法でプログラミングすることです。
セイロ