我非常擅长提升。据我了解,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();
}
答案 0 :(得分:1)
要锁定加价中的锁定,您需要将其传递给关联的scoped_lock
,在本例中为boost::mutex::scoped_lock
。因此,要锁定锁l_
,请执行以下操作:
boost::mutex::scoped_lock l(l_)