我最近在一次采访中被问到了这个问题。我想知道实现这一目标的最佳方式。
假设我有3个线程t1,t2,t3和两个队列q1,q2
t1将数据写入q1
t2将数据写入q2
t3一旦可用,就应该从q1和q2读取数据。
我以为我可以使用条件变量来读取q1和q2。这是可能的还是有更好的方法。
答案 0 :(得分:0)
让t3等待信号量。 t1,t2排队数据并将单位发布到信号量。当t3运行时,它会轮询两个队列以便处理一个项目(其中一个中将有数据),并且处理那个队列/处理该项目,然后循环返回以再次等待信号量以获取更多项目。 / p>
我假设队列类是线程安全的(否则用互斥锁保护)。