即使是单核处理器也支持多线程处理代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几十毫秒(ms)。 CPU通过时间片分配算法来循环执行任务,当前任务执行一个时 ...
分类:
编程语言 时间:
2019-12-17 17:55:33
阅读次数:
94
使用线程更好的提高资源利用率,但也会带来上下文切换的消耗,频繁的内核态和用户态的切换消耗,如果代码设计不好,可能弊大于利。 一、线程 进程是分配资源的最小单位,线程是程序执行的最小单位;线程是依附于进程的,一个进程可以生成多个线程,这些线程拥有共享的进程资源; 二、线程生命周期(相关API)1、5个 ...
分类:
编程语言 时间:
2019-12-16 13:27:45
阅读次数:
112
线程带来的风险 线程安全性问题 出现安全性问题的需要满足的条件:多线程环境、有共享资源、非原子性操作 活跃性问题 死锁 饥饿 活锁 性能问题 cpu上下文切换会有性能问题(cpu分时间片执行) 锁 自旋锁 自旋其实就是当一个线程获取到锁之后,其他的线程会进行阻塞等待,一直到这个线程释放锁后才能进入 ...
分类:
编程语言 时间:
2019-12-15 21:55:20
阅读次数:
98
函数与对其状态即词法环境(lexical environment)的引用共同构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在JavaScript,函数在每次创建时生成闭包。 词法作用域 请看下面的代码: function init() { var name = "M ...
分类:
Web程序 时间:
2019-12-15 20:14:32
阅读次数:
98
游戏服务器之多进程架构通信 https://gameinstitute.qq.com/community/detail/124098 https://www.zhihu.com/question/23508968 游戏服务器与普通服务器有什么区别? 游戏开发中的TCP、UDP、HTTP、WebSoc ...
分类:
系统相关 时间:
2019-12-14 11:46:02
阅读次数:
132
函数是JavaScript应用程序的基础,它帮助你实现抽象层,模拟类,信息隐藏和模块。在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。 Typescript为JavaScript函数添加了额外的功能,让我们可以更容易的使用 1、函数类型 我们可以给每个参数 ...
分类:
其他好文 时间:
2019-12-13 12:15:14
阅读次数:
125
1. 函数的概念 在 JS 里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。 虽然 for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用 JS 中的函数。 函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使 ...
分类:
编程语言 时间:
2019-12-08 15:30:52
阅读次数:
82
组件允许你将Ui拆分为独立可复用的代码片段,并对每个片段进行独立构思。本指南只在介绍组件的相关概念。你可以参考详细组件 API。 组件,从概念上类似与JavaScript函数。它接受任意的入参(既“props”),并返回用于描述页面展示内容的REACT元素。 函数组件与class组件 定义组件最简单 ...
分类:
其他好文 时间:
2019-12-07 12:52:22
阅读次数:
72
声明语句: 声明语句是用来 声明 或 定义 标识符(变量和函数名)并给其赋值。 1:var 变量声明(5.3.1节): var语句用来声明一个或多个变量: 2:遗漏声明(3.9节) 读取一个没有声明的变量的值:JavaScript会报错。 给一个未声明的变量赋值,(在非严格模式中)JavaScrip ...
分类:
编程语言 时间:
2019-11-29 13:12:40
阅读次数:
64
1,为啥需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗;另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的设计 ...
分类:
其他好文 时间:
2019-11-26 13:29:23
阅读次数:
72