• JavaScript螺纹的问题和答案


    要求:

    JavaScript是单线程的,有任务队列。比方使用setTimeou(func,secs)来在secs毫秒后向任务队列加入func。可是,setTimeout后面跟一个死循环,那么死循环导致任务被堵塞,也就是说func不能运行。
    我想请教一下:死循环在运行的时候,secs毫秒过去的时候,func是否被加入到任务队列中?假设加入了,但JS是单线程的,不是在这个线程中加入的,那在哪里被加入的?求大神解答下,找乐非常多东西,都是和JavaScript高级程序设计上的说法一样.
    答:

    原因是 JS 是单线程的。可是浏览器是多线程的。甚至是多进程的。
    所以。同一个标签页,仅仅有一个解释器。可能iframe有多个吧。。。

    加入维护是其它线程干的事,运行是单线程解释器干的事。 就如同Java,有反射机制吧,window 是一个 host宿主对象。也就是他自身使用 C语言实现的。不在 JS的解释器线程控制之内,仅仅是进行交互。所以。。。 你明确了吧,逻辑上JS是单线程,但实际上有非常多个其它的线程在辅助这个解释器。 实现细节上仅仅要能保证单线程的逻辑完整性即可了


    关于句柄 handler的一些理解:

    句柄。

    handler,事实上这个词翻译的挺形象的,尽管不太好理解。 你能够理解成电视机的遥控器,遥控器在手。就相当于获取了电视机这个对象,想让电视机干什么。那就操作这个“电视机对象” 即可。 持久化,一般来说就是指存到数据库;在内存里,就不叫持久化。

    重新启动后还光临。那是的持久性。



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    c++和java(c#)之间的pk
    C语言中.h和.c文件解析
    怎样花两年时间去面试一个人
    进程调度算法模拟
    1079 中国剩余定理
    Educational Codeforces Round 50 (ABCD)
    解决Android Studio默认AppTheme 没有lable标签,不显示等问题
    Codeforces Round #508(ABCD)
    牛客OI赛制测试赛2
    deepin关机卡在图标界面 mysql Community...10min
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4795114.html
Copyright © 2020-2023  润新知