pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int sharedData=0;
void *func(void *parm)
{
int rc;
printf("Thread Entered\n");
pthread_mutex_lock(&mutex);
/********** Critical Section *******************/
printf("Start critical section, holding lock\n");
++sharedData;
printf("End critical section, release lock\n");
/********** Critical Section *******************/
pthread_mutex_unlock(&mutex);
}
В приведенном выше примере показано, что вы ищете, используя библиотеку pthreads. Получите мьютекс с помощью pthread_mutex_lock и освободите его с помощью pthread_mutex_unlock. Все потоки, которые запрашивают одну и ту же блокировку, будут заблокированы, пока мьютекс не будет освобожден. Это гарантирует, что только один поток имеет доступ к вашим общим данным.