|
我有个问题,服务器socket接收队列和处理消息的线程(应该是典型的生产者和消费者线程调度的关系)是不是这样的关系:当队列消息达到一定数量的时候才解锁,把可处理标记设置为true,然后让处理线程进来处理消息,处理完释放锁,然后把可处理标志设置为false,然后io又继续接收消息,可问题是:如果cpu很忙,处理过程中消息又来了往哪里放啊?总不至于等处理消息的线程解锁再迁移数据吧?难不成要建两个队列,消息接收队列和消息处理队列分开?
我的想法是:a是处理队列,b是消息接收队列,b只有接收线程来操作,不用上锁,a队列处理线程和io线程都要操作,需要交换锁定,也不知道是不是这样。
那是否应该做两个队列?
否则cpu处理消息的时候,数据都没办法堆放了,tcp的流都不间断的。
也许是我多虑了。 |
|