消费者/生产者模式如何等待多队列?

问题描述 投票:0回答:0

假设我们的队列结构如下:

typedef struct {
    buffer_t* buffer;

    int empty;
    int full;
    
    pthread_mutex_t lock;
    pthread_cond_t queue_full;
    pthread_cond_t queue_empty;
} queue;

如果有两个队列,可能是queue01和queue02,并且一些消费者和生产者在它们上工作。
我们可以实现一个消费者在两个队列上工作吗(不创建新线程),一些伪代码,例如:

while(queue01->empty && queue02->empty){
    channel_wait(&(queue01->queue_full), &(queue01->lock))  \
    || channel_wait(&(queue02->queue_full), &(queue02->lock));
    // ... do some work with queue01's or queue02's lock
}
c mutex
© www.soinside.com 2019 - 2024. All rights reserved.