IO阻塞模型(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 所以,blocking IO的特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都被block了。 from socket import * serve ...
分类:
其他好文 时间:
2017-12-06 21:38:29
阅读次数:
266
并发编程之协程 对于单线程下,我们不可避免程序中出现io操作,但如果我们能在自己的程序中(即用户程序级别,而非操作系统级别)控制单线程下的多个任务能在一个任务遇到io阻塞时就切换到另外一个任务去计算,这样就保证了该线程能够最大限度地处于就绪态,即随时都可以被cpu执行的状态,相当于我们在用户程序级别 ...
分类:
编程语言 时间:
2017-12-05 22:38:15
阅读次数:
203
对于单线程下,我们不可避免程序中出现io操作,但如果我们能在自己的程序中(即用户程序级别,而非操作系统级别)控制单线程下的多个任务能在一个任务遇到io阻塞时就切换到另外一个任务去计算,这样就保证了该线程能够最大限度地处于就绪态,即随时都可以被cpu执行的状态,相当于我们在用户程序级别将自己的io操作 ...
分类:
其他好文 时间:
2017-12-05 13:19:50
阅读次数:
111
阻塞式IO/非阻塞IO 阻塞式IO(blocking-IO) 默认情况下,所有的套接字socket连接都是阻塞式的,在和操作系统交互的过程之中。比如说一个读操作: 1.因为涉及到网络数据交换network io,等待所有的分组报到达之后这时候数据才算在操作系统内部为就绪状态。 2.然后操作系统在从系 ...
分类:
其他好文 时间:
2017-11-26 13:55:35
阅读次数:
185
一 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能 ...
分类:
其他好文 时间:
2017-11-14 14:12:37
阅读次数:
159
IO模型介绍: 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blo ...
分类:
编程语言 时间:
2017-10-18 16:10:19
阅读次数:
271
本文目录:1. 基础2. I/O模型2.1 Blocking I/O模型2.2 Non-Blocking I/O模型2.3 I/O Multiplexing模型2.4 Signal-driven I/O模型2.5 Asynchronous I/O模型2.6 同步IO和异步IO、阻塞和非阻塞的区分3. ...
分类:
其他好文 时间:
2017-10-04 00:24:29
阅读次数:
262
一、背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证 ...
分类:
编程语言 时间:
2017-09-30 00:39:49
阅读次数:
299
3.6.1.非阻塞IO 3.6.1.1、阻塞与非阻塞 阻塞:阻塞具有很多优势(是linux系统的默认设置),单路IO的时候使用阻塞式IO没有降低CPU的性能 补充:阻塞/非阻塞, 它们是程序在等待消息(无所谓同步或者异步)时的状态. 阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果 ...
分类:
系统相关 时间:
2017-09-29 16:29:21
阅读次数:
233
协程 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特 ...
分类:
编程语言 时间:
2017-09-24 23:35:09
阅读次数:
258