这是我的生产者和消费者问题的代码。它可以编译,但是当我运行程序时它什么都不打印。我测试程序,发现问题可能与sem_wait()有关。为什么程序可以编译但输出错误?谢谢。
int main(int argc, char *argv[]) {
pthread_mutex_init(&mutex, NULL);
empty = sem_open("/mysem", O_CREAT, 0644, BUFFER_SIZE);
full = sem_open("/mysem", O_CREAT, 0644, 0);
pthread_create(&pro_thread, NULL, producer, NULL);
pthread_create(&con_thread, NULL, consumer, NULL);
pthread_exit(NULL);
return 0;
}
sem_open()函数是对的吗?我评论了以下行,程序可以运行...也许问题是关于sem_open?
empty = sem_open("/mysem", O_CREAT, 0644, BUFFER_SIZE);
答案 0 :(得分:0)
您的制作人似乎从未制作任何内容
检查信号量名称。可能empty
和full
与您在sem_open
函数中使用相同名称的实例相同