第八章
来源:互联网 发布:js文本框失去焦点时 编辑:程序博客网 时间:2024/04/28 10:41
8.23并发的、面向连接服务器的算法
以连接作为通信的基本模式
并发服务器使用面向连接协议的步骤:
算法8.4
主1: 创建套接字并将其绑定到所提供服务的熟知地址上。让该套接字保持非连接的。
主2: 将该端口设置为被动模式,使其准备为服务器所用
主3: 反复调用accept,以便接收来自客户的下一个连接请求,并创建新的从线程或者进程来处理响应。
从1: 由主线程传递来的连接请求(即针对连接的套接字)开始。
从2:用该连接于客户进行交互:读取请求并发回响应。
从3:关闭连接并退出。 在处理完来自客户的所有请求之后,从线程退出。
8.24 服务器并发性的实现
8.25把单独的程序作为从进程来使用
8.26 使用单线程获得表面上的并发性(apparent concurrency)
服务器作为单个执行线程来运行,使用select系统调用进行异步i/o,算法8.5描述单线程服务器要处理多个连接所采取的步骤:
算法8.5
1.创建套接字并将其绑定到这个服务的熟知端口上。将该套接字加到一个表中,该表中的项是可以进行i/o的描述符。
2.使用select在已有的套接字上等待I/O
3.如果最初的套接字准备就绪,使用accept获得下一个连接,并将这个新的套接字加入到表中,该表中的项是可以进行I/O的描述符。
4.如果是最初的套接字意外的某些套接字准备就绪,就使用recv或者read获得下一个请求,构造响应,用send或write将响应发回给客户。
5.继续按照步骤2进行处理。
由单个执行线程实现的并发的、面向连接的服务器。服务器线程等待下一个准备就绪的描述符,这个新的描述符意味着一个新的连接的到达,或者是某个客户在已有的连接中发送了一个请求。
8.27 各服务器类型所适用的场合
真正的和表面上的并发性:只有一个线程的服务器依靠异步I/O管理多个连接:而多线程的实现(不管是多个线程的进程、还是一个进程有多个线程),允许操作系统自动提供并发性。如果创建线程或切换环境的开销很大,或者服务器必须在多个连接之间共享或者交换数据,那么可以使用单线程的方案。如果每个从线程可以孤立的运行或者为了要获得最大的并发性(比如在多个处理器上),那么可以使用多进程方案。
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- 第八章
- Rose出现 “relation from A to B would cause an Invalid circular inheritance"解决方法。
- GNU
- centOS安装scst遇到的问题
- myeclipse快捷键收集整理
- Java中CallableStatement调用Oracle存储过程总结
- 第八章
- jquery mobile 的4个初始化事件
- linux--crontab
- Hibernate 入门之关系篇:多对多映射
- Delphi WinExec ShellExec 用法介绍
- 通向架构师的道路(第二十六天)漫谈架构与设计文档的写作技巧
- Android 通过蓝牙采集音频
- 使用python抓取小说
- ffmpeg编程(一)