js进程和线程的区别,javascript有多线程吗

  js进程和线程的区别,javascript有多线程吗

  本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

  

JavaScript是什么线程?为什么?

  JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,JavaScript为什么不能有多线程呢?这样可以提高效率。

  JavaScript的单线程,这和它的用途有关。JavaScript作为一种浏览器脚本语言,主要用于与用户交互和操作DOM。这就决定了它只能单线程,否则会带来复杂的同步问题。例如,假设JavaScript同时有两个线程,一个线程向DOM节点添加内容,另一个线程删除该节点。浏览器应该以哪个线程为标准?

  所以,为了避免复杂,JavaScript从诞生之日起就一直是单线程的,这也成为了这种语言的核心特征,以后也不会改变。

  要利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以这个新标准并没有改变JavaScript单线程的本质。

  

进程与线程

  

1.进程

  进程是指程序的一次执行,它占有一片独有的内存空间,可以通过windows任务管理器查看进程(如下图)。同时允许两个或两个以上的进程在同一个计算机系统中并行,这就是多进程。比如电脑同时运行微信、QQ、各种浏览器。浏览器运行是有些是单进程,如firefox和老版IE,有些是多进程,如chrome和新版IE

  

2.线程

  有些进程同时做不止一件事,比如Word,可以同时打字、拼写检查、打印。在一个流程中,要同时做很多事情,就要同时运行几个“子任务”。我们称这些为流程线程中的“子任务”。线程是指CPU的基本调度单位,是程序执行的一个完整流程,是进程内的一个独立执行单元。多线程意味着多个线程同时在一个进程中运行。浏览器运行是多线程。比如用浏览器下载,听歌,看视频。另外要知道JavaScript语言的一大特点就是单线程,才能利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质

  因为每个进程至少要做一件事,所以一个进程至少有一个线程。当然,像Word这样复杂的进程可以有多个线程,多个线程可以同时执行。多线程的执行方式和多进程一样,操作系统在多个线程之间快速切换,让每个线程交替运行一小段时间,看起来就像是同时执行。当然,同时执行多线程需要多核CPU。

  

3.进程与线程

  应用程序必须在进程的线程上运行。一个进程中至少有一个正在运行的线程:主线程。流程启动后会自动创建一个流程。如果多个线程同时运行,则多个线程运行的一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。多个进程间的数据不能直接共享

4.单线程与多线程的优缺点?

  单线程的优点:顺序编程很好理解。

  单线程的缺点:低效率

  多线程的优点:能有效提高CPU利用率。

  多线程的缺点:

  创建多线程开销死锁和线程间切换开销的状态同步【推荐学习:javascript高级课程】以上是javascript是什么的详细介绍。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: