ビジュアル C++ コンカレンシー ランタイムを使用してタスクを作成し、その上で 4 つの継続をスケジュールしました
#include <iostream>
#include <thread>
#include <ppltasks.h>
int main()
{
concurrency::create_task([]
{
std::cout << std::this_thread::get_id() << std::endl;
})
.then([]
{
std::cout << std::this_thread::get_id() << std::endl;
})
.then([]
{
std::cout << std::this_thread::get_id() << std::endl;
})
.then([]
{
std::cout << std::this_thread::get_id() << std::endl;
})
.then([]
{
std::cout << std::this_thread::get_id() << std::endl;
});
std::cin.get();
}
これにより、次の出力が出力されます
29432
29432
25096
25668
42488
4 つの継続が最初のタスクと同じスレッドでスケジュールされていないことに注意してください。最初のタスクと同じスレッドで継続をスケジュールする方法はありますか? TaskContinuationOptions.ExecuteSynchronouslyオプションを使用することで、C# でこれが可能になると思います。