使用信号量编译但未运行的生产者-消费者代码

时间:2018-11-16 00:45:51

标签: c compilation pthreads semaphore producer-consumer

我处于一个非常棘手的情况,因为我无法使用pthread来解决生产者-消费者问题。代码可以编译,但是当我运行代码时,没有任何反应,预期的输出也不会显示。我相信如果使用if / else语句,我的生产者和消费者线程中会有一个探针,但是我可能还有其他事情。代码如下所示:

要在命令行上对其进行编译:

gcc -pthread -lrt semaphore.c -o semaphore  

运行程序后,它会显示正确的输出

1 个答案:

答案 0 :(得分:1)

您可能需要考虑一些示例输出;但我注意到您的生产者和消费者线程的起始地址为:

int rNum = rand() / RAND_DIVISOR;
sleep(rNum);

只需从两个线程中删除它即可使程序正常工作。在我的Linux版本中,RAND_MAX为2 ^ 31,因此,这可能导致每个线程最多休眠21秒。