Операционные системы. Замятин А.В - 72 стр.

UptoLike

Составители: 

72
int my_number = *(int *)arg;
int rand_num;
printf (“thread_function is running. Argument was %d\n,
my_number);
rand_num=1+(int)(9.0*rand()/(RAND_MAX+1.0));
sleep(rand_num);
printf (Bye from %d\n, my_number);
pthread_exit(NULL);
}
Пример использования мьютекса для контроля доступа к перемен-
ной. В приведенном ниже коде функция increment_count использует
мьютекс, чтобы гарантировать атомарность (целостность) модификации
разделяемой переменной count. Функция get_count() использует мью-
текс, чтобы гарантировать, что переменная count атомарно считывается.
#include <pthread.h>
pthread_mutex_t count_mutex;
long count;
void increment_count() {
pthread_mutex_lock(&count_mutex);
count = count + 1;
pthread_mutex_unlock(&count_mutex);
}
long get_count() {
long c;
pthread_mutex_lock(&count_mutex);
c = count;
pthread_mutex_unlock(&count_mutex);
return (c);
}
Пример многопоточной программы с синхронизацией с использо-
ванием мьютексов:
#include <pthread.h>