chenshuo / muduo

Event-driven network library for multi-threaded Linux server in C++11
https://github.com/chenshuo/muduo
Other
14.7k stars 5.15k forks source link

proactor在HTTP proxy上为什么并发度比reactor高? #528

Closed CHENCHAO0526 closed 3 years ago

CHENCHAO0526 commented 3 years ago

boost 关于proactor的优势描述是: 1、移植性; 2、不需要使用多线程去实现并发。长时间的IO操作由内核异步的处理,不需要程序的干涉。因此,程序不需要开很多线程去达到高并发; 3、performance and scalability。与 thread-per-connection减少context-switching、同步、data movement across CPUs; 4、程序运行方式接近于同步阻塞IO,同步问题更加简单; 5、可以将几个函数或者操作连接(组合)成一个操作 应用在HTTP proxy上,一个需要与其他进程打交道的应用,procastor与reactor相比优点是4和5,根据书上讲的,代码层面上讲,proactor的代码逻辑更加连贯,reactor的代码将比较复杂,并且要管理好请求的状态。但我还是不理解为什么Proactor的并发度更好?因为proactor可以异步直接拿到DNS解析的成果,而reactor还要经历某种异步唤醒才能拿到DNS解析的结果?但不都是在异步唤醒吗。我还想问问一般HTTP proxy的DNS解析是怎么实现的?是单独的一个线程吗? 还有硕哥,muduo-library@googlegroups.com发不了邮件,在这里问可以吗?

chenshuo commented 3 years ago

你的提问与 muduo 无关。