Dul*_*ula 4 asynchronous tbb threadpool
我想使用TBB获得线程池行为.但每当我阅读有关TBB的文档时,他们总是谈论并行,并行 - 等等.相比之下,我需要的是一个主线程,用于将任务分配给线程池,以便这些任务将"自己"执行 - 执行任务异步.这里的任务可以是GUI的事件处理.
TBB任务调度程序是否适合此类行为?我从任务调度程序得到的印象是,如果我有可以分解并相互并行执行的任务,那将是有益的.
Ale*_*nov 10
从3.0版开始,TBB支持异步执行任务.为此,增加了一种特殊的工作提供方法tbb::task::enqueue().与tbb::task::spawn()此不同,此方法保证即使原始线程永远不会进入任务分派方法,也会执行排队任务wait_for_all().
一个简短的用法示例task::enqueue():
class MyTask : public tbb::task {
/*override*/ tbb::task* execute() {
// Do the job
return NULL; // or a pointer to a new task to be executed immediately
}
};
MyTask* t = new (tbb::task::allocate_root()) MyTask();
tbb::task::enqueue(*t);
// Do other job; the task will be executed asynchronously
Run Code Online (Sandbox Code Playgroud)
正如注释中提到的@JimMishell,可以在"设计模式"中找到如何使用它来处理GUI事件的示例; 参考手册中提供了该方法的正式描述(参见TBB文档).
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |