首先来看一下同步与异步的概念: 1.同步是指当前端发起一次操作请求时,只有后台执行完所有的代码操作才会给前端返回值。 2.异步是将前端发回的消息加入消息队列,并且立刻给前端返回请求,告诉用户可以离开当前页面去做别的事情。当后台处理完成,操作系统会通知事件和回调机制等通知相应的县城进行后续操作。 同步 ...
分类:
编程语言 时间:
2019-10-27 16:49:46
阅读次数:
84
“协程可以在遇到阻塞的时候中断主动让渡资源,调度程序选择其他的协程运行。从而实现非阻塞IO” 然而php是不支持原生协程的,遇到阻塞时如不交由异步进程来执行是没有任何意义的,代码还是同步执行的,如下所示: function foo() { $db=new Db(); $result=(yield $ ...
分类:
Web程序 时间:
2019-10-27 14:57:34
阅读次数:
118
第一级别:精读源码 该级别包含的包如下: 第二级别:深刻理解 该级别包含的包如下: 看源码能解决你90%的问题。reflect代表了反射,net代表了网络IO,nio代表了非阻塞io,concurrent代表了并发。 这四个家伙可以说每一个都够面试官问上半天的,而且,这四个包的内容,如果你要深刻理解 ...
分类:
编程语言 时间:
2019-10-26 01:01:36
阅读次数:
120
简介:Reactor 设计模式是一种事件驱动的设计模式,将一个或者多个客户端请求分发到不同的处理器上,来提升事件处理的效率。主要的应用场景就是java NIO当中用户处理网络请求。使用的是异步非阻塞IO 在接受Reactor 模式之前,需要先了解常见的几种IO网络模型。 1、BIO(阻塞IO模型) ...
分类:
其他好文 时间:
2019-10-25 16:13:02
阅读次数:
79
[toc] Event事件 用来控制线程的执行 查看对象e当前的信号状态, 默认为False 信号状态为False, 则当前线程阻塞 将e的信号状态设置为True, 被阻塞的线程进入非阻塞状态 线程池与进程池 基本概念 用来控制当前程序允许创建进程/线程的数量 防止程序创建的进程/线程过多, 超过硬 ...
分类:
编程语言 时间:
2019-10-24 23:45:47
阅读次数:
127
Node 入门 NodeJs 安装,HelloWorld + 下载地址 + 用 Node命令行输出HelloWorld NodeJs 创建应用 + http 模块引用 + 服务器创建 + 端口的监听 + 使用 node环境运行 + 代码整合 npm 包管理工具 + 在安装好 node.js 的时候就 ...
分类:
其他好文 时间:
2019-10-24 23:44:38
阅读次数:
75
Redis 是单线程+多路IO复用技术 多路复用:使用一个线程来检查多个文件描述符的就绪状态 如果有一个文件描述符就绪,则返回 否则阻塞直到超时 得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(线程池) 阻塞lO:给女神发一条短信, 说我来找你了,然后就默默的一直等着 女神下 ...
分类:
编程语言 时间:
2019-10-23 21:58:28
阅读次数:
171
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非J ...
分类:
其他好文 时间:
2019-10-23 12:03:43
阅读次数:
76
我们都知道使用gevent协程时,经常会看见在导入包的时候看见这样的代码 from gevent import monkey; monkey.patch_all() monkey.patch_all()作用呢,就是将阻塞的改成非阻塞 具体有哪些呢。 Example: 执行发现报错了。loop_exi ...
分类:
其他好文 时间:
2019-10-23 11:39:02
阅读次数:
99
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待 ...
分类:
其他好文 时间:
2019-10-23 11:30:56
阅读次数:
66