C中单个线程中的多个队列

时间:2017-09-28 09:24:51

标签: c multithreading synchronization queue pthreads

我最近在一次采访中被问到了这个问题。我想知道实现这一目标的最佳方式。

假设我有3个线程t1,t2,t3和两个队列q1,q2 t1将数据写入q1
t2将数据写入q2
t3一旦可用,就应该从q1和q2读取数据。

我以为我可以使用条件变量来读取q1和q2。这是可能的还是有更好的方法。

1 个答案:

答案 0 :(得分:0)

让t3等待信号量。 t1,t2排队数据并将单位发布到信号量。当t3运行时,它会轮询两个队列以便处理一个项目(其中一个中将有数据),并且处理那个队列/处理该项目,然后循环返回以再次等待信号量以获取更多项目。 / p>

我假设队列类是线程安全的(否则用互斥锁保护)。