Comments on N3785 - Executors and Schedulers - std-proposals
C++14後のConcurrency TSに提案されているExecutorとSchedulerを、Boost.Thread作者のVicenteさんが再設計しています。その実装は、Boost.Threadのリポジトリで、実験的に行われています。
私が提出した問題点も全て改善されていて(提案者は見てるけど、Vicenteさんは見てないと思う)、標準C++らしい、Boostらしい設計になっています。
具体的な変更点:
- Closureが
std::function
ではなく、テンプレートでCallableな関数オブジェクトを受け取るようになった。 - タスクの追加が
add()
ではなくsubmit()
になった。 - デフォルトexecutorがなくなった。簡単に実装できるのでいらない、と。
- デフォルトexecutorがなくなって仮想関数も必要なくなったので、継承階層がなくなった。
- スレッドプールに、at_thread_entryイベントを追加。その名の通り、スレッド開始時に呼ばれる関数を指定できる。現在使用しているexecutorやデフォルトexecutorは、この機構を使用して簡単に実装できる。
現状、スレッドプールにアロケータを指定できない問題が残っていますが、私がコメントしたところ「とくに問題なくアロケータオプションを追加できるだろう」と返答がありました。
この改善案は、メーリングリスト上では提案者とまだ意見が交わされていないので、どうなるかはまだわかりません。
参考
C++14規格レビュー勉強会で、私がレビューに使用した資料は以下になります: