django 多线程 与 tornado 的单线程非阻塞 原理
2019-02-26 17:51
417 查看
1.都会使用 select/epoll的原理:
django:自带webserver,selector注册一个socket端;通过设置多线程的wsgiserver------type('WSGIServer', (socketserver.ThreadingMixIn, server_cls), {})-----请求一过来就会创建一个线程处理;
tornado : 单线程非阻塞;add_handler 会添加多个socket,
- Tornado的异步条件:要使用到异步,就必须把IO操作变成非阻塞的IO。
- Tornado的异步原理: 单线程的torndo打开一个IO事件循环, 当碰到IO请求(新链接进来 或者 调用api获取数据),由于这些IO请求都是非阻塞的IO,都会把这些非阻塞的IO socket 扔到一个socket管理器,所以,这里单线程的CPU只要发起一个网络IO请求,就不用挂起线程等待IO结果,这个单线程的事件继续循环,接受其他请求或者IO操作,如此循环。
相关文章推荐
- MFC多线程中主线程阻塞了子线程
- Python线程指南(线程的:原理、管理、多线程、实例)
- java多线程与线程间通信的原理和方法
- JAVA中的多线程操作 线程等待、阻塞、让步等
- tornado io 阻塞 线程
- runloop实现原理初解 和 使用runloop阻塞线程
- Java多线程之线程阻塞原语LockSupport的使用
- Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。
- java多线程之线程并发库条件阻塞Condition的应用
- 多线程的join阻塞的是哪个线程
- java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞
- 多线程学习之线程阻塞机制
- java多线程:16、阻塞队列【BlockingQueue】实现线程数据共享的效果
- Java中线程的使用 (2)-多线程、线程优先级、线程睡眠、让步、阻塞
- java多线程学习1(补充)-线程的概念和原理
- java多线程之线程并发库阻塞队列的应用
- 多线程之Java线程阻塞与唤醒
- java多线程3(线程的阻塞和生命周期)
- [Linux线程]多线程的阻塞和退出
- java多线程编程一之java线程的原理