日期:2014-05-20  浏览次数:20604 次

生产者同时是消费者引发死锁
一堆线程(有生产者、消费者)共用一个存数据的总线,总线容量固定
其中有一个线程既是生产者也是消费者:取某些格式的数据,处理后放回总线,
当该线程性能不足时,总线满无法存放处理后的数据;同时自己因为无法存便无法继续取数据处理,总线便始终满,从而导致死锁

该如何解决?

------解决方案--------------------
生产和消费者都放在一个线程里面限制了两端处理能力的扩展性,当生产和消费两端的复杂度不平衡的时候势必会吃空缓存队列,表面上看也就产生了你这个现象。针对这样你可以考虑把生产和消费做成独立的线程,如果消费的负载大就可以增加消费处理线程的数量。

但是仔细的看,我怀疑你的问题出在线程同步控制上。所以你得把你的相关代码贴出来看下。