线程基础进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的一条运行路线 处理器调度的最小单元,也称为轻量级进程 可以对进...
分类:
编程语言 时间:
2014-08-14 13:12:18
阅读次数:
367
你需不需要一台每秒可以进行数百万亿次浮点运算的机器?或者,你想不想知道点关于你家地下室里的超级计算机是如何上电运行的趣事儿?建造一台属于自 己的计算集群——亦即超级计算机——是每个闲得发慌还有钱烧的专业极客都能做到的事情!从技术上来讲,一台现代多处理器超级计算机实际上是一个计算机网 络,这些计算机并...
分类:
其他好文 时间:
2014-08-08 11:58:05
阅读次数:
303
自旋锁是SMP中经常使用到的一个锁。所谓的smp,就是对称多处理器的意思。在工业用的pcb板上面,特别是服务器上面,一个pcb板有多个cpu是 很正常的事情。这些cpu相互之间是独立运行的,每一个cpu均有自己的调度队列。然而,这些cpu在内存空间上是共享的。举个例子说,假设有一个数据 value....
分类:
编程语言 时间:
2014-08-01 19:13:52
阅读次数:
246
所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。通俗一点来说,就是让若干台计算机联合起来工作(服务),可以是并行的,也可以是做备份。网络的负载均衡是一种动态均衡技术,常见的实现方式是通过一些...
分类:
系统相关 时间:
2014-07-09 21:24:10
阅读次数:
305
uptime,top查看系统负载情况在多处理器系统中,负载阀值是基于内核的数量计算,按100%负载计算,1表示单个处理器,而2则说明有两个双处理器,那么4.00就说明主机具有四个处理器。4.00*2大于4.00*2超过这个阀值就表示系统过载了LoadAverage实时计算公式:load(t)=(load(t-1)e^(-..
分类:
其他好文 时间:
2014-07-08 08:16:14
阅读次数:
224
问题:如果机器是多CPU,上面的程序会出现什么结果?如何在多个CPU时显示同样的状态?例如,在双核的机器上,如果让一个单线程的程序死循环,能让两个CPU的使用率达到50%的水平么?为什么?
多CPU的问题首先需要获得系统的CPU信息。可以使用GetProcessorInfo()获得多处理器的信息,然后指定进程在哪一个处理器上运行。其中指定运行使用的是SetThreadAffinityMask...
分类:
其他好文 时间:
2014-07-02 08:59:43
阅读次数:
178
在介绍java内存模型之前,我们先看看两个内存模型
Sequential Consistency Memory Model:连续一致性模型。这个模型定义了程序执行的顺序和代码执行的顺序是一致的。也就是说 如果两个线程,一个线程T1对共享变量A进行写操作,另外一个线程T2对A进行读操作。如果线程T1在时间上先于T2执行,那么T2就可以看见T1修改之后的值。
这个内存模型比较简单,也比较直观,比较符合现实世界的逻辑。但是这个模型定义比较严格,在多处理器并发执行程序的时候,会严重的影响程序的性能。因为每次对共...
分类:
编程语言 时间:
2014-06-26 06:57:22
阅读次数:
538
1.GIL与线程调度
Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用
为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL。
GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响。
在调用任何Python C API之前,要先获得GIL
GIL缺点:多处理器退化为单处理器;优...
分类:
编程语言 时间:
2014-06-25 19:48:52
阅读次数:
358
深入分析Volatile的实现原理
引言
在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上I...
分类:
其他好文 时间:
2014-06-21 19:47:44
阅读次数:
688
贪婪是一种原罪,不要再追求性能的路上离正确越来越远。
内存模型
java内存模型重排序
锁synchronized
什么是锁独占锁分拆锁分离锁分布式锁
volatile
内存模型
java内存模型
提到同步、锁,就必须提到java的内存模型,为了提高程序的执行效率,java也吸收了传统应用程序的多级缓存体系。
在共享内存的多处理器体系架构中,每...
分类:
其他好文 时间:
2014-06-18 12:00:22
阅读次数:
225