收发线程池和分析线程池之间如何很好的配合工作?
由于收发线程只负责收发,所以其收来的数据是放在一个全局的std::deque队例中(先入后出方式),即一旦有新的包,就首先要进入一个全局的临界区,然后push_back,接着激发一个全局的事件。这时,有好几个分析线程在该事件上等待。一旦事件被激发,所有的分析线程就都会活动,并从全局的这个std::deque队列中取数据。
现在我个人认为这样的结构是不怎么好的。因为牵涉到deque不断的push_back和pop_front操作,同时,如果分析处理线程处理速度很快,那么同一时间用不着所有的分析线程全部都被激活。真的毫无必要。但是,如果要想同一时间只激活一个线程,这样的算法和条件判断处理等,可能浪费的时间比激活所有线程还要多。真的不知道该怎么办了。
高手能不能给点方法,收发线程池和分析线程池之间如何配合最好?有没有更好的算法?