首页 > 解决方案 > 用于 C 中互斥的 Pthread 互斥锁的 Posix 信号量等效项

问题描述

以下面这段代码为例(由https://www.geeksforgeeks.org/condition-wait-signal-multi-threading/提供)将 apthread_mutex_lock() 和转换pthread_mutex_unlock()为 POSIX 并实现函数之间互斥的方法是什么.

#include <pthread.h> 
#include <stdio.h> 
#include <unistd.h> 
pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER; 
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
int done = 1; 
void* foo() 
{ 
    pthread_mutex_lock(&lock); 
    if (done == 1) { 
        done = 2; 
        printf("Waiting on condition variable cond1\n"); 
        pthread_cond_wait(&cond1, &lock); 
    } 
    else { 
        printf("Signaling condition variable cond1\n"); 
        pthread_cond_signal(&cond1); 
    } 
    pthread_mutex_unlock(&lock); 
    printf("Returning thread\n"); 
    return NULL; 
} 

标签: cpthreadsposixsemaphoremutual-exclusion

解决方案


推荐阅读