【问题标题】:TBB function_node with member function带有成员函数的 TBB function_node
【发布时间】:2015-10-27 13:38:32
【问题描述】:

想象一下,我有一个 MyClass 类,想用 Intel TBB 实现多线程:

class MyClass
{
public:
   tbb::flow::function_node<int, double>* _fnode;
private:
   tbb::flow::graph* _graph;
   double fbody(int inp);
}

是否可以使用类成员函数初始化_fnode?简单的方法不起作用:

_fnode = new tbb::flow::function_node<int, double>(*_graph,1,MyClass::fbody)

【问题讨论】:

  • 使用绑定。相关页面的示例:function_node* pSubtracter2 = new function_node(m_graph, m_concurrency, bind(&IHelloTool::addToIt, clonedPrivate, _1)); atlas-computing.web.cern.ch/atlas-computing/links/… 函数 MyClass::fbody 需要在 MyClass 的实例上调用。您需要将实例与成员函数绑定。
  • 乔纳森,谢谢你,这个解决方案真的很管用! :) 如果你不介意,我提出问题

标签: c++ visual-studio tbb tbb-flow-graph


【解决方案1】:

感谢 Jonathan 提出使用 std::bind 的想法。所以,这个问题的解决方法:

_fnode = new tbb::flow::function_node<int, double>(*_graph,1,std::bind(&MyClass::fbody, this, std::placeholders::_1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多