Какой самый простой способ получить блокировку для общей переменной для программы UNIX C? - PullRequest
0 голосов
/ 07 августа 2010

Я пишу программу на C UNIX, которая является многопоточной и разделяет одну переменную во всех потоках. Какой самый простой способ получить блокировку для этой переменной? Я не могу найти какие-либо маленькие библиотеки только для блокировки в UNIX.

Есть предложения как это сделать?

Спасибо, Бода Цидо.

Ответы [ 3 ]

4 голосов
/ 07 августа 2010

Существует pthread_mutex_lock , если вы уже используете pthreads.

Быстрый пример, где counter является общей переменной, а mutex является переменной мьютекса типа pthread_mutex_t:

/* Function C */
void functionC()
{
   pthread_mutex_lock( &mutex );
   counter++;
   pthread_mutex_unlock( &mutex );
}
3 голосов
/ 07 августа 2010

Вы не можете заблокировать переменную.Предмет интенсивных исследований, STM - многообещающий кандидат, но еще никто не написал операционную систему, которая его использует.

Нет, вы можете блокировать только код, пытающийся получить доступ к этой переменной.Что обычно делается с мьютексом.

1 голос
/ 07 августа 2010

Существует множество способов ширины , и я рекомендую вам изучить их все, но хорошей отправной точкой является реализация мьютекса в pthreads , которая имеет несколько все идет к этому: pthreads доступен на многих платформах, и он хорошо спроектирован .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...