摘要:
1, 必须在非阻塞模式下,才能实现IO的多路复用,否则一个卡住就都卡住了。(单线程下的多路复用) 先检测自己,现在没有客户端连进来,所以会卡住。 运行结果: 2. 客户端代码: 服务器端: 运行结果:fd=240 文件描述符 3. 客户端: 运行结果: 至此链接已经建立。 4.最终版本 服务器端:
阅读全文
posted @ 2017-08-17 22:20
momo8238
阅读(293)
推荐(0)
编辑
摘要:
需求:用select (多路复用)模拟一个 socket server。可以接收多并发。 1. 一开始是检测自己,如果我有活动了,就说明有客户端要连我了。 运行结果:卡住了,有客户端进来时才会不卡。 2.服务器端 客户端: 运行结果: 有2个链接的情况下,无法多次接收数据 3. server端进行修
阅读全文
posted @ 2017-08-17 20:45
momo8238
阅读(331)
推荐(0)
编辑
摘要:
二 IO模式 刚才说了,对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段: 1. 等待数据准备 (Waiting for the data to be ready)
阅读全文
posted @ 2017-08-17 17:30
momo8238
阅读(252)
推荐(0)
编辑
摘要:
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。 一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进程的阻塞 - 文件描述符 - 缓存 I/O 用户空间与内核空间
阅读全文
posted @ 2017-08-17 16:38
momo8238
阅读(135)
推荐(0)
编辑
摘要:
转自 http://blog.leiqin.info/2012/12/02/%E8%BF%9B%E7%A8%8B-%E7%BA%BF%E7%A8%8B%E5%92%8C%E5%8D%8F%E7%A8%8B%E7%9A%84%E7%90%86%E8%A7%A3.html 进程、线程和协程的理解 进程、
阅读全文
posted @ 2017-08-17 08:59
momo8238
阅读(144)
推荐(0)
编辑
摘要:
1. IO 操作不占用CPU(从硬盘读数据,从网络读数据,从内存读取数据) 计算占用CPU,例如1+1=2的计算就是占用CPU的。 python 多线程,不适合CPU密集操作系统的任务,适合IO操作密集型的任务。 2. 进程、线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下。 进程
阅读全文
posted @ 2017-08-17 08:41
momo8238
阅读(382)
推荐(0)
编辑