我是boost的新手。据我所知,boost::mutex同时具有成员lock()和unlock()。然而,我得到以下的错误信息关于他们后面的功能。我在源代码所在的文件夹中运行了"sudo apt-get install libboost-dev"命令。这也是我的教授给学生的代码。我确信它应该正确编译。任何帮助都太好了!
错误消息:
代码:矩阵。cc:函数'
void p_scalarproduct_t(int*, int*, int*, int, int, boost::mutex*)
':矩阵。cc:75:错误:'
class boost::mutex
'没有名为'lock
'的成员矩阵。cc:77:错误:'
class boost::mutex
'没有名为'unlock
'的成员矩阵。cc:函数'
int p_scalarproduct(int*, int*, int, int)
':矩阵。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();
}
要锁定boost中的锁,需要将其传递给相关的scoped_lock
,在本例中为boost::mutex::scoped_lock
。因此,要锁定l_
锁,执行以下命令:
boost::mutex::scoped_lock l(l_)