函数是一个可以被调用和执行任意次的程序片段。JavaScript函数是参数化的:函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作。函数调用会为形参提供实参的值。函数使用它们实参的值来计算返回值。函数使用它们实参的值来计算返回值,成为该函..
分类:
编程语言 时间:
2014-10-22 16:03:29
阅读次数:
175
(1)用户级线程
主要解决的是上下文切换的问题,它的调度算法和调度过程会全部由用户自行选择解决,在运行时不需要特定的内核支持。操作系统往往会提供一个用户空间的线程库,该用户程序库提供了线程的创建、调度和撤销等功能,而内核仍然对进程进行管理。如果一个进程中的某一个线程调用了一个阻塞的系统调用函数,那么该进程包括该进程中的线程也同时被阻塞。这种用户级线程的主要缺点是在一个进程中的多个线程的调度中无法...
分类:
编程语言 时间:
2014-10-13 01:50:49
阅读次数:
205
SQLOS 抽象出了: 1、任务高度管理子系统。 2、内存管理子系统。 3、错误,异常处理机制。 4、死锁侦测各解决机制。 5、运行第三方代码。好处: 1、减少线种的上下文切换。空闲连接不占用线程...
分类:
数据库 时间:
2014-10-08 16:44:15
阅读次数:
186
一、任务切换 在操作系统中当任务需要从一个任务切换到另外一个任务时,要将当前任务的现场保存到当前任务的堆栈中(当前任务现场主要指CPU相关寄存器),然后回复新任务的现场并执行新任务。这个叫做上下文切换(context switch),也可以叫任务切换。 上下文切换会给系统带来一定的负担。CPU寄存器...
分类:
其他好文 时间:
2014-09-23 22:02:55
阅读次数:
188
多线程程序设计的困难
难以重现失败,bug难以追踪
并发错误难以追踪和消除
独立任务的拆分并不总是那么明朗
线程同步、通信引入的复杂
多线程引发的竞争、死锁、可见性问题(难以调试、追踪)
测试困难,简单的测试并不能覆盖生产环境的问题
设计不当,并不能充分提升性能(不控制线程数量,造成无谓上下文切换和Cache失效)
see Amdahl's law,阿姆达尔定律,...
分类:
编程语言 时间:
2014-09-23 19:25:45
阅读次数:
300
一. 何谓"原子操作": 原子操作就是: 不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch). 二. 为什么关注原子操作? 1. 如果确定某个操作是原...
分类:
其他好文 时间:
2014-09-21 21:07:21
阅读次数:
276
阻塞
非竞争的同步可以完全在JVM中处理,竞争的同步则可能需要操作系统的介入,从而增加开销。当在锁上发生竞争时,竞争失败的线程肯定会阻塞。JVM在实现阻塞行为时,可以采用自旋等待,就是通过循环不断的尝试获取锁。直到成功。或者通过操作系统挂起被阻塞的线程。这两种方式的效率高低取决于上下文切换的开销以及在成功获取锁之前需要等待的时间。如果等待时间较短,采用自旋等待的方式,如果时间较长,则采用操作系统...
分类:
编程语言 时间:
2014-09-10 22:30:41
阅读次数:
230
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录.....
分类:
编程语言 时间:
2014-08-19 16:19:04
阅读次数:
235
线程基础进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的一条运行路线 处理器调度的最小单元,也称为轻量级进程 可以对进...
分类:
编程语言 时间:
2014-08-14 13:12:18
阅读次数:
367
(重点 面试官最最关心的一个问题,必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)
可重入:概念基本没有比较正式的完整解释,但是它比线程安全要求更严格。根据经验,所谓“重入”,常见的情况是,程序执行到某个函数foo()时,收到信号,于是暂停目前正在执行的函数,转到信号处理...
分类:
编程语言 时间:
2014-07-31 17:03:46
阅读次数:
242