如果Javascript是一个单线程进程,AJAX是异步的,那么它是如何发生的? 所以在操作系统级别不是JS引擎为Ajax做非阻塞I/O调用?Do JS在操作系统级别使用非阻塞I/O来支持AJAX?
3
A
回答
2
是的,浏览器引擎正在对Ajax进行非阻塞I/O调用(当您执行非阻塞ajax调用时)。
浏览器有多种不同的方式可以实现ajax网络。我们唯一知道的就是ajax I/O请求不会阻塞JavaScript线程。而且,每个浏览器都可以自由地以不同的方式实现它,只要它们不会阻止JS执行线程以及在ajax调用期间保持浏览器正常工作所需的任何其他线程。
在浏览器内部,它可能使用单独的OS线程以阻塞的方式在该线程上运行ajax调用,它可以在单独的线程上使用非阻塞I/O,它可以在JavaScript解释器线程上使用非阻塞I/O(可能不太可能,但可能)。它甚至可以使用一个独立的流程来管理与IPC之间的网络操作以在它们之间进行通信。它选择的完全取决于浏览器实现,因为这些方法中的任何一个都可以让javascript解释器继续运行,而ajax网络异步发生。不同的浏览器也可能有不同的实现。
Chrome对于其他浏览器不支持的浏览器窗口使用单独的进程。
相关问题
- 1. 阻塞来电android系统
- 2. 使用Ruby的非阻塞IO?
- 3. IOCP和非阻塞IO
- 4. .net非阻塞IO pre 4.5
- 5. 非阻塞IO和HystrixObservableCommand
- 6. 非阻塞版本的系统()
- 7. 适用于Android的非阻塞IO
- 8. 使用TPL与并行阻塞IO操作
- 9. 重构非阻塞nodejs do..while循环
- 10. 黑莓支持Android操作系统
- 11. 不支持的操作系统
- 12. 支持Bluemix的操作系统
- 13. DotNetBrowser - 支持的操作系统
- 14. Node.js支持的操作系统
- 15. 非阻塞套接字和io
- 16. 阻止IO与非阻塞IO;寻找好的文章
- 17. 什么是简单的话阻止IO和非阻塞IO?
- 18. 使用fork的C++程序中的非阻塞系统调用
- 19. Winsock的非阻塞IO重叠仍块
- 20. Python中的阻塞与非阻塞网络IO
- 21. 在Play Framework 2.0.3中使用阻塞IO
- 22. 如何在Boost Spirit中使用非阻塞或异步IO?
- 23. 识别操作系统
- 24. 非阻塞IO如何在javascript中工作
- 25. IO操作在其他线程中阻塞我的UI线程?
- 26. 使用Python(Bash?)获取操作系统级别的系统信息(CPU速度)
- 27. 在多个聚合级别的支持操作
- 28. mpi:阻塞与非阻塞
- 29. 如何使用非阻塞IO写入文件?
- 30. 非阻塞io使用BinaryWriter写入到usblp0
我确实认为它可能使用了其中一种机制,但我想知道一个具体的例子,比如firefox(比如说)JS引擎使用的。 – Durin 2012-04-03 17:51:00
@AnirudhTomer - 你真的想解决什么问题? Firefox源代码是开源的。人们最终可以找到相关的代码,看看它是如何工作的,如果你需要知道。我不知道我的头顶,只是我不明白它使用哪种技术是多么重要。 – jfriend00 2012-04-03 17:54:52
嗯,我对网络技术很陌生,我正在考虑AJAX如何工作,所以我只想把这个问题放在这里。 你!发布这个问题后,我做的第一件事就是下载FF代码并检查出我需要的东西。它有什么关系:好!除非我知道它在内部是如何工作的,否则渴望依然:)无论如何,感谢回复 – Durin 2012-04-03 18:07:35