POSIX信号量函数sem_post()不唤醒sem_wait()问题

时间:2019-05-01 17:32:01

标签: c++ c posix semaphore

我正在创建一个进程P,并且进程P有一个子C。两个进程每个都创建一个线程。而且我想使用信号量同步两个线程。 问题在于子进程线程的sem_post不会唤醒父进程线程的sem_wait。

sem_t sem;
void* th(void* arg){
    sem_wait(&sem);
    printf("DONE");
}
void* th1(void* arg){
    printf("%d",sem_post(&sem));
}
pthread_t id[2];
int main(){
    sem_init(&sem,2,1);
    sem_wait(&sem);
    pid_t id1 = fork();
    if(id1==0){
        pthread_create(&id[0],NULL,th,NULL);
        pthread_join(id[0],NULL);
    }
    else if(id1>0){ 
        pthread_create(&id[1],NULL,th1,NULL);
        pthread_join(id[1],NULL);
        wait(NULL);
    }
}

0 个答案:

没有答案