n个生产者-n个消费者
生产者为IO线程,负责收包及断开连接处理
消息者为数据处理线程,负责解析数据包以发送  共享数据格式为  pHead -> 节点 -> 节点 ->pEnd 的队列
  节点包含数据
   socket   套接口句柄
   szbuf[BUFF_SIZE]   接收缓冲区
   len   缓冲区数据长度      生产者收到数据后,肯定要锁住队列,然后才能写szbuf,写完之后解锁并唤醒一个消费者线程,
  这可以采用信号量或自动重置事件,线程唤醒后要等待进入队列,进入之后解析数据,取出一个
  完整数据包并解锁. 然后消费者处理数据后将响应发出。
      生产者收到套接口退出事件后,也要锁住队列,删除套接口节点,解锁并关闭套接口。 但是,
  有可能消费者已经将数据取出,必然会造成发送失败。  我的问题:
  1. 单个线程占用锁的时间问题,生产者只依靠socket查询节点的速度是比较快的,memcpy的内存也
  比较小,占锁的时间不用担心,但是消费者进入队列之后并不知道是哪个socket接收了新数据,需要
  对每一个节点进行解析,直到发现取出一个完整包,这花费的时间我想是不菲的。 这必然造成生产者
  在队列上的等待。  2. 生产者收到套接口关闭事件后,必然删除队列中socket节点,并closesocket(socket),这时可能
  消费者线程已经取出数据,他们并不知道此时套接口是无效的,一定会造成发送失败,再次调用
  closesocket.