标签:
方案0:accept+read/write,阻塞,一次服务一个客户。
方案1:accept+fork,阻塞,采用多进程,长连接,并发性低,开销高,process-per-connection
方案2:accept+thread,阻塞,采用多线程,长连接,并发性中,开销中,多连接互通,thread-per-connection.
方案3:prefork,方案2的变形.
方案4:prethread,方案3的变形.
// 开始采用I/O复用
方案5:poll(reactor),无阻塞,并发性高,开销低,单线程 reactor.
方案6:reactor+thread-per-task,无阻塞,并发性中,多核,开销中,对请求开启一个线程来处理,thread-per-request。
方案7:reactor+workerthread,无阻塞,并发性中,开销中,有一个专门处理请求的工作线程。
方案8:reactor+threadpoll,无阻塞,并发性高,开销低,方案7的改版。
方案9:multiple reactors,无阻塞,并发性高,开销低,muduo网络库采用,one loop per thread。
方案10:multiple reactors+threadpoll。
方案9是muduo内置的多线程方案,有一个 main reactor 负责 accpet ,然后将接受到的连接,分发到其他 sub reactor ,采用轮换的作用,来分担,充分利用多核。one loop per thread.一般线程的数量按核数计算,固定。
学习之前,先讲解下各种服务器模型,还有muduo的服务器模型
标签:
原文地址:http://www.cnblogs.com/cycxtz/p/4937352.html