一 概述 1.volatile 保证共享数据一旦被修改就会立即同步到共享内存(堆或者方法区)中。 2.线程访问堆中数据的过程 线程在栈中建立一个变量的副本,修改完毕后将数据同步到堆中。 3.指令重排 为了提高执行效率,CPU会将没有依赖关系的指令重新排序。如果希望控制重新排序,可以使用volatil ...
分类:
编程语言 时间:
2017-06-27 18:45:28
阅读次数:
176
单词解释: 乱序执行:指CPU对代码的执行顺序进行乱序优化,但保证各执行代码单元的顺序按指令顺序排列。以达到充分利用处理器的各处理单元的目的。(可以理解成:一个任务有不同的执行单元,这些单元之间有一定的执行顺序,但部分执行单元可提前工作,乱序执行就是让这部分执行单元提前一段时间执行,从而提高整体的效 ...
分类:
其他好文 时间:
2017-06-27 00:02:23
阅读次数:
286
1.前言 freeRTOS中所有任务的通信和同步机制都是基于队列来实现。 2.队列的读写 图 队列的读写操作 队列的数据存储 队列可以保存有限个具有确定长度的数据单元,队列可以保存的最大单元数目称为队列的深度。 ...
分类:
其他好文 时间:
2017-06-25 18:32:46
阅读次数:
144
非阻塞的同步机制 简单的说,那就是又要实现同步,又不使用锁。 与基于锁的方案相比,非阻塞算法的实现要麻烦的多,但是它的可伸缩性和活跃性上拥有巨大的优势。 实现非阻塞算法的常见方法就是使用volatile语义和原子变量。 硬件对并发的支持 原子变量的产生主要是处理器的支持,最重要的是大多数处理器架构都... ...
分类:
编程语言 时间:
2017-06-25 10:19:51
阅读次数:
191
本章学习重点: 1、Jvm: 如何将java代码编译为class文件。 如何装载class文件及如何执行class文件。 jvm如何进行内存分配和回收。 jvm多线程:线程资源同步机制和线程之间交互的机制。 3.1 java代码的执行机制 java源码编译机制。 1、三个步骤: 分析和输入到符号表( ...
分类:
编程语言 时间:
2017-06-24 18:31:17
阅读次数:
212
以下内容转自http://ifeve.com/locks/: 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchron ...
分类:
编程语言 时间:
2017-06-16 19:28:14
阅读次数:
191
一、协程 1.协程介绍 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所 ...
分类:
编程语言 时间:
2017-06-10 20:24:57
阅读次数:
263
多进程之间通信方式: 文件映射:本地之间 共享内存:本地之间 匿名管道:本地之间 命名管道:跨服务器 邮件槽:一对多的传输数据,通常通过网络向一台Windows机器传输 剪切板:本地之间 socket:跨服务器 多线程之间通信方式: 全局变量 自定义消息响应 多线程之间同步机制: 临界区:不可以跨进 ...
分类:
编程语言 时间:
2017-06-10 12:25:30
阅读次数:
147
volatile是java虚拟机提供最轻量级的同步机制。 volatile两个特性:1,保证同步的变量对所有线程是可见的。虽然对所有线程是即时可见的,但是却不保证原子性,也就是不保证线程安全,比如对于创建20个线程,每个线程都执行i++操作,执行100次,但是i输出的结果小于2000。因为一条i++ ...
分类:
编程语言 时间:
2017-06-09 12:39:29
阅读次数:
142
六、线程安全 synchronized 1.诸如多窗口售票、查询对象是否存在的情况会出现线程安全的问题,引发线程安全有如下几个条件:a.肯定要是多线程环境b.有共同操作到的数据c.线程间会受到彼此操作数据的影响。 2.java通过同步机制synchronize关键字来处理线程安全的问题。同步可以同步 ...
分类:
编程语言 时间:
2017-06-08 01:18:45
阅读次数:
176