parallel_hash_map导致编译错误

时间:2018-08-01 08:52:31

标签: c++ concurrency hashmap

我正在尝试解决与hash_maps有关的问题。由于我拥有大量数据,并且可以对普通的hash_map进行并发读写访问,因此我决定使用tbb parallel_hash_map。这是一个英特尔库。我们期望在使用此功能后获得更好的读写并发性。

但是我们不能前进很多。下面是问题所在:

#include <iostream>
#include "tbb/concurrent_hash_map.h"

using namespace tbb;
using namespace std;

typedef concurrent_hash_map<long int,char*> data_hash;

int main(){
  data_hash dh;
  data_hash::accessor a;

  long int k=10; 
  dh.insert(a,k);
  a->second="hello";
  for(data_hash::iterator j=dh.begin();j!=dh.end(); ++j){ 
    std::cout << "%lu %s\n",j->first,j->second;
  }
  if(dh.find(a,9)) {
    std::cout << "true\n";
  } else {
    std::cout << "false\n";            
  }
  a.release();
  return 0;
}

使用g ++编译时,出现以下错误:

  

在函数tbb::spin_rw_mutex_v3::scoped_lock::acquire(tbb::spin_rw_mutex_v3&, bool)': demochashmap.cpp:(.text._ZN3tbb16spin_rw_mutex_v311scoped_lock7acquireERS0_b [tbb::spin_rw_mutex_v3::scoped_lock::acquire(tbb::spin_rw_mutex_v3&, bool)]+0x3c): undefined reference to中,tbb :: spin_rw_mutex_v3 :: internal_acquire_writer()'   demochashmap.cpp :(。text._ZN3tbb16spin_rw_mutex_v311scoped_lock7acquireERS0_b [tbb :: spin_rw_mutex_v3 :: scoped_lock :: acquire(tbb :: spin_rw_mutex_v3&,bool)] + 0bb3t:r:w:t:w:t:w:3:x:t:t:w:3:x: upgrade_to_writer()':   demochashmap.cpp :(。

我了解程序在错误消息中看不到提到的函数的定义。据我们了解,包含文件“ #include“ tbb / concurrent_hash_map.h””就足够了。

不确定我应该尝试什么。

参考:https://software.intel.com/en-us/node/506077

0 个答案:

没有答案