提升编译问题

时间:2011-04-22 20:53:49

标签: c++ boost locking compiler-errors mutex

我非常擅长提升。据我了解,boost :: mutex有成员lock()和unlock()。但是,我收到有关其后的功能的以下错误消息。我在源代码的同一个文件夹中运行了'sudo apt-get install libboost-dev'命令。这也是我给教授的教授代码。我确定它应该正确编译。任何帮助都会很棒!

错误讯息:

  

matrix.cc:在函数“void p_scalarproduct_t(int*, int*, int*, int, int, boost::mutex*)”中:

     

matrix.cc:75:错误:“class boost::mutex”没有名为“lock”的成员

     

matrix.cc:77:错误:“class boost::mutex”没有名为“unlock”的成员

     

matrix.cc:在函数“int p_scalarproduct(int*, int*, int, int)”中:

     

matrix.cc:91:错误:“bind”不是“boost”的成员

代码:

void p_scalarproduct_t(int* c, int* a, int* b, 
                       int s, int e, boost::mutex* lock)
{ 
    int tmp;

    tmp = 0;
    for (int k = s; k < e; k++)
        tmp += a[k] * b[k];

    lock->lock();
    *c = *c + tmp;
    lock->unlock();
}

1 个答案:

答案 0 :(得分:1)

要锁定加价中的锁定,您需要将其传递给关联的scoped_lock,在本例中为boost::mutex::scoped_lock。因此,要锁定锁l_,请执行以下操作:

boost::mutex::scoped_lock l(l_)