吞咽阻塞感 在JavaScript中,是否存在“同步非阻塞”和“异步阻塞”这两种情况?
浏览量:2993
时间:2021-03-14 05:51:11
作者:admin
在JavaScript中,是否存在“同步非阻塞”和“异步阻塞”这两种情况?
首先,JS是单线程,没有多线程,也没有同步异步说。只要JS代码被执行,它就必须被同步。JS中所谓的同步和异步与C和Java中的线程异步不同。它只用于判断JS执行线程在Ajax和网络资源处理线程之间切换时是否等待。如果使用同步请求,JS线程将挂起并等待请求完成,这必须被阻止。使用异步请求,JS线程将在网络请求启动后继续向下执行。这种阻塞也发生在实现引擎的C和C级别,而不是JS本身。当显示警报和其他弹出框时,用户可以直观地体验到JS级别的“阻塞”。浏览器内核本身并不阻止警报,而是在上层阻止警报。所以,我的答案是:否定
阻塞和非阻塞是非常不同的。阻塞意味着当IO调用完成时系统调用返回,并且阻塞的进程处于睡眠状态。非阻塞IO意味着无论系统调用是否完成,它都将立即返回,而不会导致进程挂起。在服务器设计中使用非阻塞IO来响应高并发连接请求。这里的另一个概念是Io重用,它实际上是阻止系统调用,例如select或poll,而不是真正的读或写。同步和异步IO:以下是POSIX的定义。所谓同步IO就是请求进程阻塞,直到IO操作完成。阻塞IO和非阻塞IO都是同步IO。异步IO意味着IO操作不会阻塞请求进程。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。