C++网络编程(卷1):学习笔记(四)

时间:2022-12-15 11:19:45

服务器可以分为iterative,concurrent,reactive等几大类

iterative服务器在处理后续请求之前,会完整地处理每一个客户的请求。在处理一个请求时,要么将其他请求排成队列,要么忽略。因此最适合以下两种服务:短期服务和不经常运行的服务

concurrent服务器同时处理多个客户请求,在执行服务时,要么使用多线程,要么使用多进程。并发式服务器非常适合“I/O操作频繁”的服务和“执行时间会变化”的长周期服务

reactive服务器几乎是同时处理多个请求---尽管所有的处理实际上在一个线程中完成。存在以下局限性:编程的复杂性增加,可靠性和性能降低

 

Eager spawning :  线程池:1)Half sync/Half async

                                      2) Leader/Followers

 

On demand spawning:  每个请求一个线程;每个连接一个线程

 

线程调度模型:N:1模型               (进程竞争范围)1个用户进程阻塞会影响整个进程的所有线程

                    1:1模型               这里也称系统竞争范围

                   N:M模型               这里综合了上面两种情况,并针对阻塞做了特殊处理

这里的指的是用户的线程与内核的线程的对应关系

 

并发体系是联系以下要素的纽带:CPU,数据和控制消息,执行任务的服务

并发体系的规范类型有:

1.“基于任务”的体系。任务是主动的,任务中处理的消息是被动的。在一个任务中,或一个层次上,一般不需要同步

2.“基于消息”的体系。消息是主动的,任务是被动的。需要复杂的并发控制