對於這個問題,最好不要設置調度策略,並使用一些手動任務組初始化控制,例如:
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));
來源
2012-11-02 16:21:38
23W
如果您爲函數構建一個重載/參數化它,那麼您可能會更高興,這樣您就可以轉向串行版本。 – Rick 2012-07-23 16:29:28
重載該函數將導致公佈較低層次的功能,因爲並行化處於幾個級別。我不願意追隨超載..將來維護將很難處理......無論如何感謝 – 2012-07-24 06:05:20
告訴其他開發者從他/她的代碼/數據中獲取所有全局變量,靜態變量等,以便它不會物? – 2012-07-24 06:34:35