Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中互斥Pthread互斥锁的Posix信号量等价_C_Pthreads_Posix_Semaphore_Mutual Exclusion - Fatal编程技术网

C语言中互斥Pthread互斥锁的Posix信号量等价

C语言中互斥Pthread互斥锁的Posix信号量等价,c,pthreads,posix,semaphore,mutual-exclusion,C,Pthreads,Posix,Semaphore,Mutual Exclusion,以下面这段代码为例(由提供),将pthread\u mutex\u lock()和pthread\u mutex\u unlock()转换为POSIX并实现函数间互斥的方法是什么 #include <pthread.h> #include <stdio.h> #include <unistd.h> pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER; pthread_mutex_t lock = PTHREA

以下面这段代码为例(由提供),将
pthread\u mutex\u lock()
pthread\u mutex\u 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; 
} 
#包括
#包括
#包括
pthread_cond_t cond1=pthread_cond_初始值设定项;
pthread\u mutex\u t lock=pthread\u mutex\u初始值设定项;
int done=1;
void*foo()
{ 
pthread_mutex_lock(&lock);
如果(完成==1){
完成=2;
printf(“等待条件变量cond1\n”);
pthread_cond_wait(&cond1,&lock);
} 
否则{
printf(“信令条件变量cond1\n”);
pthread_cond_信号(&cond1);
} 
pthread_mutex_unlock(&lock);
printf(“返回线程\n”);
返回NULL;
} 

将pthread_mutex_lock()和pthread_mutex_unlock()转换为POSIX的方法是什么。。。?我不知道你说的“转换到POSIX”是什么意思,因为
pthread.*
就是POSIX。这能回答你的问题吗?