对于这个问题最好不要设置调度器策略,而使用一些手动的任务组初始化控制,例如:
using namespace Concurrency;
std::vector< task_handle< std::function< void() > > > aTask;
aTask.push_back( make_task([](){ /*taks 1*/}) );
aTask.push_back( make_task([](){ /*taks 2*/}) );
aTask.push_back( make_task([](){ /*taks 3*/}) );
task_group tGroup;
bool bSerialMode = true; /* or false */
if (!bSerialMode)
{
std::for_each(aTask.begin(), aTask.end(), [&](task_handle< std::function< void() > >& handle){
tGroup.run( handle );
});
}
else
{
tGroup.run( [&](){
std::for_each(aTask.begin(), aTask.end(), [&](task_handle< std::function< void() > >& handle){
tGroup.run_and_wait( handle ); });
});
}
如果您决定限制一个虚拟处理器的所有任务,那么也要设置 MinConcurrency。
CurrentScheduler::Create( SchedulerPolicy( 2, Concurrency::MinConcurrency, 1, Concurrency::MaxConcurrency, 1 ) );