Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度- ...
分类:
编程语言 时间:
2017-06-21 00:26:42
阅读次数:
260
除了在硬件上增加告诉缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果一致,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因 ...
分类:
编程语言 时间:
2017-05-27 10:34:27
阅读次数:
213
一、并发中的关键问题及其解决思路 并发中的关键问题:1. 线程之间如何通信 —— 线程之间如何交换信息2. 线程之间如何同步 —— 控制线程的相对执行顺序 两种解决思路: 1. 隐式通信,显示同步 —— 线程之间通过共享内存中的公共状态来隐式通信,那么就必须显示的指定线程见的互斥来实现同步2. 显式 ...
分类:
编程语言 时间:
2017-04-17 21:53:41
阅读次数:
206
一.前言 1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软 ...
分类:
编程语言 时间:
2017-02-09 10:49:15
阅读次数:
220
1. 可重入函数 (1)不使用静态变量和全局非const变量 (2)不使用锁 (3)不调用任何不可重入函数 (4)使用volatile防止寄存器缓存变量 See Aslo : CPU的乱序执行,会使得对共享变量的访问变得不可知 2. 线程 用户使用的是用户态线程,Kernel运行的是内核态的线程 O ...
分类:
编程语言 时间:
2016-08-22 12:21:52
阅读次数:
169
基本解释 C++11引入了多线程,同时也引入了一套内存模型。从而提供了比较完善的一套多线程体系。在单线程时代,一切都很简单。没有共享数据,没有乱序执行,所有的指令的执行都是按照预定的时间线。但是也正是因为这个强的同步关系,给CPU提供的优化程度也就相对低了很多。无法体现当今多核CPU的性能。因此需要 ...
分类:
编程语言 时间:
2016-08-07 15:15:27
阅读次数:
562
c++11 内存模型解读 关于乱序 说到内存模型,首先需要明确一个普遍存在,但却未必人人都注意到的事实:程序通常并不是总按着照源码中的顺序一一执行,此谓之乱序,乱序产生的原因可能有好几种: 编译器出于优化的目的,在编译阶段将源码的顺序进行交换。 程序执行期间,指令流水被 cpu 乱序执行。 inhe ...
分类:
编程语言 时间:
2016-05-20 09:49:29
阅读次数:
183
java中的多线程 一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会启动多个进程。启动进程的时候,操作系统会为进程分配资源,其中最主要的资源是内存空间,因为程序是在内存中运行的。在进程中,有些程序流程块是可以乱序执行的,并且这个代码块可以同时被多次执行。实际上,这样的代码块就是线程体
分类:
编程语言 时间:
2016-03-04 16:06:37
阅读次数:
213
1、硬件的习性 流水线CPU,最好是顺序执行;内存引用,cpu与内存的关系;原子操作,使用锁、互斥量、临界区等方式,保证数据元素正确的执行顺序;内存屏障,内存屏障的作用是防止cpu为了提升性能而进行得乱序执行;缓存失效,cpu高速缓存对cpu间频繁访问的变量起反效果;分布式系统的IO操作。2、缓存一...
分类:
其他好文 时间:
2015-09-15 09:18:41
阅读次数:
148
http://blog.163.com/zhaojie_ding/blog/static/1729728952007925111324379/?suggestedreading处理器的乱序和并发执行目 前的高级处理器,为了提高内部逻辑元件的利用率以提高运行速度,通常会采用多指令发射、乱序执行等各种措...
分类:
其他好文 时间:
2015-08-13 14:11:31
阅读次数:
1108