多线程开发用了很久,但是一直没去深入了解。长久以来一直有一些迷惑。直到深入了解后,才发现了以前的理解有不少错误的地方。
单线程等于同步,多线程等于异步
这种理解很直观,毕竟只有一个线程怎么异步?
Node.js表示不服,我就是单线程,我也能异步。谈一谈Node中的异步和单线程。
看完这篇文章我明白了单线程也能异步,把IO等耗时的操作比作烧水,我可以在这个时候切菜,这就是异步啊。
等等,似乎有点不对,那io又谁来开启,又谁来通知cpu我已经结束了呢?
Node.js异步IO的实现,这篇文章解决了我的疑惑。
Node.js里面只有自己写的代码是跑在主线程上,但是内部并不是单线程的,由C编写的底层开启了线程做IO操作。
恍然大悟,我现在的理解就是,会有一个可运行的线程池在等待cpu的使用权。类似IO,网络请求这种耗时干等的操作,线程会放到需要等待的线程池中(阻塞),不会获取cpu的使用权,直到操作完成
这个理解了,并发和并行就很容易了。
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26