Future
のサンプルです。 Future
/ Promise
を利用すると、非同期的に処理を実行する場合の同期や計算結果の受け渡しを簡単かつ安全に行うことができます。
PackagedTask
, Async
は、Future
とPromise
を利用して実装されていて、処理をより簡潔に記述することができます。
using nlib_ns::threading::Future;
using nlib_ns::threading::Promise;
using nlib_ns::threading::PackagedTask;
using nlib_ns::threading::Thread;
using nlib_ns::threading::ThreadSettings;
using nlib_ns::threading::ThreadArg;
static int DeferredPlus(int x, int y) {
return x + y;
}
static int Square(Future<int>& x) {
int tmp = x.Get();
return tmp * tmp;
}
bool UsePackagedTask() {
PackagedTask<int(int, int)> task;
Future<int> future;
return false;
} else {
Thread th;
ThreadSettings settings;
settings.SetDetachState(true);
int val1 = 1;
int val2 = 2;
return false;
}
return true;
}
bool UseAsync() {
return true;
}
bool UsePromiseAndFuture() {
return true;
}
bool UseContinuation() {
return true;
}
static bool SampleMain(int, char**) {
return UsePackagedTask() && UseAsync() && UsePromiseAndFuture() && UseContinuation();
}
NLIB_MAINFUNC