当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。
而一个进程又是由多个线程所组成的。
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待, 这样就大大提高了程序的效率。
顾名思义,一个程序中只有一个线程,任何操作都基于此线程,那么就存在一个阻塞问题。
同步和异步关注的是消息通知机制
上面是书本上比较枯燥的概念,下面举一个生活中的例子便于理解同步异步和阻塞非阻塞的关系。
现在有一个场景,一个男生当面向一个女生表白。在程序中男生对应着客户端即调用者,女生对应着服务端即被调用者。
男生向女生表白后可能发生如下几种情况:
上面说到同步阻塞、异步非阻塞,当然还有另外两种情况(同步非阻塞、异步阻塞),我们在此暂不讨论。
在Node中写了一个libuv库,采用了异步非阻塞的思想,底层实际上使用了多线程来实现的。
Node使用了事件驱动、非阻塞式I/O的模型,使其轻量又高效
Node能火起来最大的一个原因在于包管理器npm
,它是全球最大的开源库生态系统。
Nginx
解决跨域问题。引入Node也主要是为了让后端职责更专注于逻辑处理,对于一些数据转换完全可以交由前端处理,使得职责更加分明。todo
Node系列-下一节事件循环详解
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有