生产者和消费者中的sem_wait()

时间:2016-04-20 20:14:37

标签: c

这是我的生产者和消费者问题的代码。它可以编译,但是当我运行程序时它什么都不打印。我测试程序,发现问题可能与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);

1 个答案:

答案 0 :(得分:0)

您的制作人似乎从未制作任何内容

检查信号量名称。可能emptyfull与您在sem_open函数中使用相同名称的实例相同