我处于一个非常棘手的情况,因为我无法使用pthread来解决生产者-消费者问题。代码可以编译,但是当我运行代码时,没有任何反应,预期的输出也不会显示。我相信如果使用if / else语句,我的生产者和消费者线程中会有一个探针,但是我可能还有其他事情。代码如下所示:
要在命令行上对其进行编译:
gcc -pthread -lrt semaphore.c -o semaphore
运行程序后,它会显示正确的输出
答案 0 :(得分:1)
您可能需要考虑一些示例输出;但我注意到您的生产者和消费者线程的起始地址为:
int rNum = rand() / RAND_DIVISOR;
sleep(rNum);
只需从两个线程中删除它即可使程序正常工作。在我的Linux版本中,RAND_MAX为2 ^ 31,因此,这可能导致每个线程最多休眠21秒。