在Linux中,一切都是典型的阅读操作过程
当用户进程调用此系统调用时,开始的第一阶段:准备数据。多次,数据尚未到达开始(例如,未收到完整的数据包),此时需要等待足够的数据。在用户过程的过程中,整个过程将被阻止。返回结果后,将抬高用户进程并重新运行。
因此,特征是两个执行阶段(等待数据和复制数据)都是。
例如,这些接口正在阻止类型
只需回答服务器/客户端模型
大多数接口都是阻塞性的。SO称为封锁接口是指系统调用(通常是IO接口),而无需返回调用并让当前的线程块。
实际上,除非指定特定规范,否则几乎所有的IO接口(包括接口)都是阻塞性的,实际上非常麻烦,因为在调用时,该线程将被阻止。在此期间
一个相对简单的改进解决方案是在服务器端使用多线程或多进程。目的是允许每个连接具有独立的线程或过程,以使任何一个连接的阻塞都不会影响其他连接。
假设服务器需要同时为多个客户提供服务
主线程不断等待客户端的连接请求。
为什么可以很多次?
设计时,它是针对多个客户的考虑的,以便它可以返回新的客户
界面:
它是使用的手柄值。执行完成后,操作系统已开始监视指定端口的所有连接请求。如果有请求,请将请求添加到请求队列
呼叫接口是绘制第一个连接信息的请求队列,以创建与S相似的新返回句柄队列
实际上,似乎尚未解决多个客户的要求。实际上,如果您想同时响应数千个连接,无论您使用多线程还是多过程都会认真占领系统资源
该模型可以轻松有效地解决小规模的需求,但是面对大规模请求,它将遇到性能瓶颈。您可以使用非块界面来解决此问题
原始:https://juejin.cn/post/7102586380168986660