Функция семафоров POSIX sem_post () не вызывает проблемы sem_wait () - PullRequest
0 голосов
/ 01 мая 2019

Я создаю процесс 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...