首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于tbb任务

关于tbb任务
EN

Stack Overflow用户
提问于 2012-04-11 18:14:49
回答 1查看 328关注 0票数 1

在处理任务时,例如使用以下命令:

代码语言:javascript
复制
class MyTask: public tbb::task {
  private:
    int x;
  private:
    void DoSomething(...){...} // Invoked only inside execute
    void DoMore(...){...}  // Invoked only inside execute
  public:
    MyTasks(...){...}
    tbb::task* execute(){...}
};

一旦任务开始运行,是否可以并发执行DoSomething()或DoMore(),或者这些方法只能由开始执行任务的线程调用?

我读到TBB允许窃取工作,但它窃取的是什么?它是否窃取了一段数据,计算并将结果返回给主线程,或者窃取是否可能执行私有方法?

如果我的问题不清楚,很抱歉!

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-11 20:56:22

TBB窃取了一个任务,即从tbb::task派生的类的实例。然后调用任务的方法execute()。此方法由单个线程执行,但它可以生成放入线程的本地任务池中的新任务,并且可以被其他线程窃取。

在您的示例中,仅由execute()调用的私有方法将不会并发运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10103965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档