首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

js 箭头函数详解

认识箭头函数 es6 新增了使用胖箭头(=>)语法定义函数表达式的能力,很大程度上,箭头函数实例化的函数对象与正式的函数表达式创建的函数对象行为是相同的。...任何可以使用函数表达式的地方,都可以使用箭头函数: // 普通函数 let sum = function(a, b) { return a + b; } // 箭头函数 let sum1 =...(a, b) => { return a + b; } 箭头函数简洁的语法对开发者来说是十分友好的,从上面的例子可以得知箭头函数的简单用法: (参数) => { 函数体 } 2....this,箭头函数的this是继承父执行上下文里面的this ,这里箭头函数的执行上下文是函数fn1(),所以它就继承了fn1()的this,obj1调用的fn1,所以fn1的this指向obj1, 所以...注意:简单对象(非函数)是没有执行上下文的! 如果fn1也是个箭头函数呢?

1.2K10

线程上下切换

文章目录 前言 上下切换 上下切换会消耗资源吗? 如何减少上下切换导致额外的开销 前言 曾经有一份丰厚的报酬摆在我面前,我没有珍惜。直到失去之后我才意识到,我可以会写线程上下切换。...---- 上下切换 这就是上下切换。 CPU通过分配时间片来执行任务,当一个任务的时间片用完,就会切换到另一个任务。在切换之前会保存上一个任务的状态,当下次再切换到该任务,就会加载这个状态。...---- 上下切换会消耗资源吗? 那当然啊。...是因为线程上下切换导致额外的开销。...在Linux系统下可以使用vmstat命令来查看上下切换的次数(上一篇讲过这个) ---- 如何减少上下切换导致额外的开销 减少上下切换次数便可以提高多线程的运行效率。

78910

linux内核上下切换解析

linux的上下切换就是进程线程的切换,也就是切换struct task_struct结构体,一个任务的上下文包括cpu的寄存器,内核栈等,由于1个cpu上的所有任务共享一套寄存器,所以在任务挂起的时候需要保存寄存器...每种处理器都提供了硬件级别的上下切换,比如x86架构下的TSS段,TSS段包括了一个任务执行的所需要的所有上下文,主要有:1.通用寄存器和段寄存器。...所以上下切换也很简单,直接用call或者jmp指令调度任务。同样ARM架构也有快速上下切换技术。但是Linux为了适用更多的cpu架构没使用处理器相关的上下切换技术,而是大部分通过软件实现。...linux上下切换就在schedule()函数里,很多地方都会调用这个函数。...经过前面的代码计算后找出下一个要执行的任务,然后开始执行上下切换

1.2K30

深入分析Linux上下文与上下切换

上下切换上下切换是指操作系统在多任务环境下,从一个任务切换到另一个任务时保存和恢复这些上下文信息的过程。...根据任务的不同,可以把上下切换可以分成三种不同的上下切换场景:进程上下切换、线程上下切换以及中断上下切换。我们将从底层原理出发,详细介绍每种场景的具体实现和影响因素。...进程上下切换进程的上下切换    进程上下切换是指从一个进程切换到另一个进程。它发生在多任务系统中,由调度器负责决定哪个进程获得 CPU 时间。...虽然系统调用过程中不涉及虚拟内存等用户态资源的切换,也不会切换进程,但实际上,CPU 的上下切换是无法避免的。因此,系统调用过程中的上下切换通常被称为特权模式切换,而非上下切换。...线程上下切换    线程上下切换与进程上下切换类似,但开销更小。因为线程共享相同的地址空间,切换时无需刷新内存映射。线程上下切换通常发生在同一进程内的不同线程之间。

46330

JS 执行上下

理解执行上下文 执行上下文(Execution Context): 函数执行前进行的准备工作(也称执行上下文环境) 运行JavaScript代码时,当代码执行进入一个环境时,就会为该环境创建一个执行上下文...JavaScript中执行环境 全局环境 函数环境 eval函数环境 (已不推荐使用) 那么与之对应的执行上下文类型同样有3种: 执行上下文的类型 全局执行上下文 函数执行上下文 eval函数执行上下文...程序代码中基本都会存在函数,那么调用函数,就会进入函数执行环境,对应就会生成该函数的执行上下文。 先插播一个知识点:JS是"单线程"! "单线程"! "单线程"!...JS中管理多个执行上下文 函数编程中,代码中会声明多个函数,对应的执行上下文也会存在多个。...因为JS执行中最先进入全局环境,所以处于"栈底的永远是全局环境的执行上下文"。

4.1K41

并发编程之上下切换

多线程之上下切换 1.1. 定义 1.2. 上下切换的分类和诱因 1.2.1. 自发性的上下切换 1.2.2. 非自发性上下切换 1.3. 上下切换的花销 1.3.1....间接开销 多线程之上下切换 定义 在单处理器的情况下,每个线程的执行时间是根据时间片大小决定或者自身的其他原因,如果一个线程被迫或者主动暂停运行时,另外一个线程(可能是同一个进程中的线程或者其他进程中的...,以在之前的基础上继续运行 上下切换的分类和诱因 自发性的上下切换 自发性上下切换是指线程由于自身因素导致的切出。...IO操作(如读取文件) 或者等待其他线程的持有的锁也会导致自发性上下切换 非自发性上下切换 由于线程调度器的原因被迫切出 时间片用完 一个更高优先级的线程需要运行 垃圾回收器在执行垃圾回收的过程中可能也是需要暂停线程才能完成工作...上下切换的花销 上下切换的花销是必须的,即使在多核的处理器系统中上下切换也是必须的,因为我们需要执行的线程的数量总是大于处理器的数量。

89620

上下切换,你确定了解吗?

前言 听到上下切换,大家第一反应肯定是:一定要减少这货出现的次数。确实上下切换对性能的影响显而易见,但有时又无法完全避免,这就要求我们对上下文性能损耗了然于胸,才能更准确地评估系统性能。...本文将从这以下两个方面来展开 上下切换有哪些类型以及可能出现的场景 衡量各场景上下切换耗时 1, 上下切换类型及场景 上下文大体上可以分为两类 进程上下文 中断上下文 进程上下文具体包括: (1...中断上下文具体包括: (1)硬件传递过来的参数 因此上下切换可以分为以下几类: (1)进程之间的上下切换:A进程切换到B进程 (2)进程和中断之间的上下切换:进程A被中断打断 (3)中断之间的上下切换...模式切换 这是要说一种特殊的上下切换:模式切换,即进程A从用户态因为系统调用进入内核态,这种切换之所以特殊,是因为它并没有经过完整的上下切换,只是寄存器上下文进行了切换,所以模式切换的耗时相对完整进程上下文更低...[6.png] 从测试数据看: 如果两个进程跨NUMA,一次上下切换的耗时在2500ns 如果两个进程在同NUMA,一次上下切换的耗时在1500ns 在虚拟机里面,跨核的上下切换会更大,因为vcpu

10.6K6950

聊一聊CPU上下切换

它们都是CPU在运行时必须依赖的环境,因此也被称作为CPU上下文 CPU上下切换 CPU上下切换就是把前一个任务的上下文(也就是CPU寄存器和程序计数器)保存起来,然后加载新任务的上下文开始执行。...根据CPU执行的任务的不同,上下切换分为这三种:进程上下切换、线程上下切换,中断上下切换 进程上下切换 每次进程的上下切换将会花费几十纳秒到数微秒的时间,过多的进程上下切换就是我们上篇文章提到过系统负载过高的原因之一...以下这些场景都会引起进程的上下切换: 我们知道在多核CPU中,为了公平调度,CPU的时间是分为一段段的时间片然后分配给各个进程的,当某个进程的时间片用完之后,就会被系统挂起,从而让CPU切换到其他进程...我们知道,相较于进程,线程才是CPU调度的最小单位,而一个进程内可能包含多个线程,这些线程共享这个进程的内存、CPU时间段等资源 所以普通的线程上下切换就不需要切换整个进程的资源而只需要切换线程的线程栈和寄存器等...,这也是多线程应用相较于多进程应用的优势所在 中断上下切换 中断上下切换是为了响应硬件的各种事件设计出来的,中断程序会打断进程的正常执行。

78520

探讨Linux CPU的上下切换

因此,CPU 上下切换至少有三种不同的类型: 进程上下切换 线程上下切换 中断上下切换 让我们一一来看看。...进程上下切换是指从一个进程切换到另一个进程,而系统调用期间始终运行同一个进程 系统调用过程通常被称为特权模式切换,而不是上下切换。但实际上,在系统调用过程中,CPU 的上下切换也是不可避免的。...进程上下切换 vs 系统调用 那么进程上下切换和系统调用有什么区别呢?首先,进程是由内核管理的,进程切换只能发生在内核态。...显然,同一个进程内的线程切换切换多个进程消耗的资源要少。这也是多线程替代多进程的优势。 中断上下切换 除了前面两种上下切换之外,还有另外一种场景也输出 CPU 上下切换的,那就是中断。...另外,和进程上下切换一样,中断上下切换也会消耗 CPU。过多的切换次数会消耗大量的 CPU 资源,甚至严重降低系统的整体性能。

1.3K20
领券