古代TCP服务器
上节我们介绍了一个多任务的TCP服务器,但是每个任务都会创建一个线程,系统的线程承载量是不高的,大几十个线程就可能压垮系统,这样无法实现我们高并发高性能TCP服务器的目标。
这节内容我们继续在上一节的基础上改进我们的服务器。既然每个任务不能单独占用一个线程,那可以把所有响应任务放到单独一个子线程中处理,主线程只负责监听新的客户端连接,并把新的连接下放的子线程中处理。
那主线程和子线程怎样交互呢?
答案是添加一个任务队列,主线程把已经建立的连接放入任务队列中,子线程循环遍历任务队列,有连接存在就执行客户端以服务的数据交互。没有任务就继续循环。主线程相当于生产者,子线程相当于消费者。如下图所示:
一 服务端编码
//server3.cpp
#