TCP并发服务器

在之前我们写过单循环服务器:同一时刻只能处理一个客户端任务

并发服务器则是在同一时刻,能够处理多个客户端的任务

一、实现方法

1、多进程

安全性好。

2、多线程

并发量更高、高效。

3、IO多路复用

二、IO模型

1、阻塞IO

阻塞函数:fgets、scanf、read、recv、getchar等。

特点:

(1)实现多个IO同步的效果;(有先后顺序)

(2)CPU占有率低。

2、非阻塞IO

特点:

(1)使用轮询的方式实现,可监测多路复用。

(2)CPU占有率高。

实现:

(1)获得原文件描述符的属性;

(2)增加非阻塞属性;fcntl

int fcntl(int fd , int cmd , ...)

参数:cmd为F_GETFL(获得) 、F_SETFL(设置) 、F_SETOWN(关联)等。

(3)设置新属性。

例如;非阻塞的读管道。

3、信号驱动IO

特点:

(1)实现异步IO操作,节省CPU开销。

(2)只能监测少量IO。

实现:

(1)增加异步属性;

(2)关联当前进程;

(3)注册信号处理函数。

例如:信号驱动的读管道。

相关推荐
最后一个bug21 小时前
CPU的MMU中有TLB还需要TTW的快速查找~
linux·服务器·系统架构
福尔摩斯张1 天前
Linux的pthread_self函数详解:多线程编程中的身份标识器(超详细)
linux·运维·服务器·网络·网络协议·tcp/ip·php
2401_832298101 天前
一云多芯时代:云服务器如何打破芯片架构壁垒
运维·服务器·架构
代码游侠1 天前
复习——网络基础知识
网络·笔记·网络协议·算法·http
Web极客码1 天前
如何在 Linux 中终止一个进程?
linux·运维·服务器
wregjru1 天前
【C++】2.4 map和set的使用
网络·网络协议·rpc
A13247053121 天前
防火墙配置入门:保护你的服务器
linux·运维·服务器·网络
Zzqqads1 天前
vnc连接问题:Timed out waiting for a response from the computer
服务器
玖疯子1 天前
JavaScript性能优化实战的技术文章大纲
服务器
计算机小手1 天前
Kong + Konga 网关入门实践:Docker 部署、反向代理与插件使用指南
运维·经验分享·网络协议·docker·kong·开源软件