一、 上下文切换问题:时间片一般是几十毫秒,任务从保存到再加载的过程就是一次上下文切换,多线程竞争锁时会引起上下文切换,时间片到了会引起上下文切换 减少上下文切换:1、无锁并发线程 2、CAS算法 3、使用最少线程 4、协程 死锁问题:1、尽量避免一个线程同时获得多个锁 2、尽量避免一个线程在锁内同 ...
分类:
其他好文 时间:
2020-02-22 20:01:20
阅读次数:
60
SemaphoreSlim属于混合模式,其允许我们在等待时间很短的情况下无需使用上下文切换。然而,有一个叫做Semaphore类的老版本。该版本使用纯粹的内核时间方式。一般没必要使用它,除非是非常重要的场景。我们可以创建一个具名的Semaphore,就像一个具名的Mutex一样,从而在不同的程序中同 ...
分类:
编程语言 时间:
2020-02-21 17:59:29
阅读次数:
74
基本概念 进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。进程是操作系统动态执行的基本单元。 线程:一个进程中包含若干线程,当然至少有一个线程,线程可以利用进程所拥有的资源。线程是独立运行和独立调度的基本单元。 协程:协程是一种用户态的轻量级线程。协程无需线程上下文切换的开销,也无 ...
分类:
编程语言 时间:
2020-02-18 23:21:33
阅读次数:
153
JavaScript:函数、标准对象 初识函数 函数就和Java中的方法是一样的,说白了,就是一系列语句的集合,我们可以提取出来实现复用! 在JavaScript中,定义函数的方式如下: function abs(x) { if (x >= 0) { return x; } else { retur ...
分类:
编程语言 时间:
2020-02-18 18:08:56
阅读次数:
68
参考资料:《Java并发编程的艺术》 用于快速回忆,详情请看书籍原文 1. 一些概念 1.1 上下文切换 定义:任务从保存到再加载的过程 减少上下文切换 无锁并发编程:将临界资源划分给不同线程各自访问 CAS算法 最少线程原则:不创建无用的线程 协程:在单线程里面实现多任务调度(IO多路复用) 1. ...
分类:
编程语言 时间:
2020-02-13 22:46:11
阅读次数:
100
[toc] sql优化 sql查询性能 开启Show Profile功能,默认该功能是关闭的,使用前需开启。 性能消耗查询 show profile的常用查询参数。 ①ALL:显示所有的开销信息。 ②BLOCK IO:显示块IO开销。 ③CONTEXT SWITCHES:上下文切换开销。 ④CPU: ...
分类:
数据库 时间:
2020-02-13 19:29:56
阅读次数:
75
一、方法重用使用 call() 方法,您可以编写能够在不同对象上使用的方法。1、函数是对象方法在 JavaScript 中,函数是对象的方法。如果一个函数不是 JavaScript 对象的方法,那么它就是全局对象的函数(参见前一章)。下面的例子创建了带有三个属性的对象(firstName、lastN... ...
分类:
移动开发 时间:
2020-02-13 17:18:05
阅读次数:
103
一、函数定义JavaScript 使用关键字 function 定义函数。函数可以通过声明定义,也可以是一个表达式。1、函数声明函数声明的语法 :function functionName(parameters) { 执行的代码}函数声明后不会立即执行,会在我们需要的时候调用到。function m... ...
分类:
编程语言 时间:
2020-02-13 13:08:44
阅读次数:
55
1.上下文切换 CPU通过给每个线程分配CPU时间片来实现并发,切换过程中线程的信息从保存到再加载就是一个上下文切换。由于频繁的进行上下文切换,会消耗资源,所以并发不一定比串行快。 可以通过Lmbench3测量上下文切换的时长;可以通过vmstat测量上下文切换的次数。 减少上下文切换的方法: (1 ...
分类:
编程语言 时间:
2020-02-13 00:20:41
阅读次数:
79
原文:redis单线程如何支持高并发 redis支持高并发的原因: redis是基于内存的,内存读写很快 redis的是单线程的,省去了很多多线程上下文切换的时间 redis虽然是单线程,但采用了IO多路复用技术,非阻塞IO,即多个网络连接复用一个线程,保证多连接的同时增加系统的吞吐量 redis的... ...
分类:
编程语言 时间:
2020-02-08 15:49:36
阅读次数:
78