Non-busy blocking Queue Implementation in C
问题 I am trying to implement a queue in C that causes a process to non-busy wait until there is an element in the queue to consume. I have tried two different things to try to achieve this. The first problem I have is if the enqueue/dequeue operations have if conditionals to check the bounds( if (q->count == QUEUESIZE) ), the call to sem_wait will return immediately because no other process has obtained a lock. If I change the conditional to while (q->count == QUEUESIZE), I believe the consumer