与tbb :: task_arena和tbb :: task_scheduler_observer链接时出错

时间:2016-07-12 07:53:41

标签: c++ c++11 g++ tbb linker-errors

我想通过使用tbb :: task_scheduler_observer挂钩到tbb :: task_arena。根据文档,这应该像shown here一样工作。但是,当我尝试编译以下代码时

<input type="hidden" value="1" name="testcookie">

#define TBB_PREVIEW_TASK_ARENA 1
#include "tbb/task_scheduler_observer.h"
#include "tbb/task.h"
#include "tbb/task_arena.h"
class MyObserver : public tbb::task_scheduler_observer
{
  public:
    MyObserver( tbb::task_arena &a ) : tbb::task_scheduler_observer(a)
    {
       observe(true); // activate the observer
    }
    /*override*/ void on_scheduler_entry( bool worker ) 
    {
      // Do something here
    }
    /*override*/ void on_scheduler_exit( bool worker ) { }
};

我得到了

#define TBB_PREVIEW_TASK_ARENA 1
#include "tbb/task_arena.h"

int main()
{
  tbb::task_arena a;
  MyObserver my(a);
}

错误。使用-ltbb标志编译时,其他tbb函数(和类)工作正常。

我使用Ubuntu 14.04和g ++ 4.8.4并启用-std = c ++ 11。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,这就是解决问题的方法。显然,采用tbb :: task_arena的task_scheduler_observer是社区预览功能。您需要在包含标题

之前启用它
#define TBB_PREVIEW_LOCAL_OBSERVER 1
#include "tbb/task_scheduler_observer.h"

会做到这一点。现在编译好了。另外,我从源代码构建库而不是使用ubuntu存储库中提供的库。可以使用CMake构建here