Проблемы с компиляцией - PullRequest
       27

Проблемы с компиляцией

0 голосов
/ 23 апреля 2011

Я очень, очень новичок в повышении. Насколько я понимаю, в 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: ошибка: 10 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 Ответ

1 голос
/ 23 апреля 2011

Чтобы заблокировать блокировку в boost, вам нужно передать ее соответствующему scoped_lock, в данном случае boost::mutex::scoped_lock.Чтобы заблокировать блокировку l_, сделайте следующее:

boost::mutex::scoped_lock l(l_)
...