我使用 Visual c++ 并发运行时创建了一个任务,然后在其上安排了四个延续
#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# 中实现。