我正在创建一个进程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);
}
}