next up previous contents
Next: Иерархия блокировок. Up: Синхронизация потоков. Previous: Удаление мьютекса.   Contents

Пример использования мьютексов.

Функция increment_count() использует мьютекс, чтобы гарантировать атомарность модификации разделяемой переменной count.

Функция get_count() использует мьютекс, чтобы гарантировать, что переменная count атомарно считывается (рис. 29):

#include <pthread.h> 

pthread_mutex_t count_mutex; 

long long count; 

void increment_count() {

  pthread_mutex_lock(&count_mutex); 

  count = count + 1;

  pthread_mutex_unlock(&count_mutex); 

}

 

long long get_count() {

  long long c;

  pthread_mutex_lock(&count_mutex); 

  c = count; 

  pthread_mutex_unlock(&count_mutex);

  return (c); 

}

Рис. 29. Атомарные операции с мьютексом.



2003-12-09