template<class T>
class nn::nlib::threading::PackagedTask< T >
関数をラップし、別スレッドで実行し戻り値をスレッドセーフに取得できるようにするクラスです。C++11のstd::packaged_task
に似ています。
- テンプレート引数
-
T | 関数の型。int(int, int) のように記述して実体化します。引数は5つまで可能で、void 型の戻り値もサポートされています。 |
- 説明
- 引数が5つまでの関数に対応しています。 それぞれ、
arg1, arg2, arg3, arg4, arg5
というデータメンバにアクセスが可能です。
- 以下のようにテンプレートを実体化して利用します。
int myplus(int x, int y) { return x + y; }
.....
PackagedTask<int(int, int)> task(myplus);
int arg1 = ....;
int arg2 = ....;
Future<int> myfuture;
task.GetFuture(&myfuture);
Thread th;
th.Join();
int result = myfuture.Get();
Future.h の 1110 行目に定義があります。