单例模式最要关心的则是对象创建的次数以及何时被创建。 Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的次数以及何时被创 建”这两点上较真起来,Singleton模式可以相当的复杂,比头五种模式加起来还复杂,譬如涉及到DCL双锁检测 ...
分类:
其他好文 时间:
2016-06-15 14:02:20
阅读次数:
107
来自https://www.zhihu.com/question/31459750 答主解释说:不能指望volatile能解决多线程竞争问题,除非所用的环境系统不可靠才会为了保险加上volatile, 或者从极限效率考虑来实现很底层的接口,这要求编写者对逻辑走向很清楚,不然会出错。 c++11标准明 ...
分类:
编程语言 时间:
2016-06-14 15:42:53
阅读次数:
183
本文内容主要总结自《Java并发编程的艺术》第5章——Java中的锁。 一、AQS AbstractQueuedSynchronizer(简称AQS),队列同步器,是用来构建锁或者其他同步组建的基础框架。该类主要包括: 1、模式,分为共享和独占。 2、volatile int state,用来表示锁 ...
分类:
编程语言 时间:
2016-06-13 22:01:11
阅读次数:
269
这一章节我们来讨论一下使用volatile声明的变量的各种操作是非原子性的。1.上一章节我们已经提到,volatile把工作内存里面变量的改变同步到主内存, 使得各个线程能够把该变量当成是整体的状态控制2.但是,使用volatile声明的变量的写操作是非原子性的代码清单:package com.ray.deepintothread.ch03.topic_2;
public class Volat...
分类:
编程语言 时间:
2016-06-12 03:23:41
阅读次数:
149
这一章节我们讨论一下synchronized不但具备操作的同步性,还具备volatile的可视性。1.引入之前的异步死循环代码:package com.ray.deepintothread.ch03.topic_3;
public class DeadForAsychn {
public static void main(String[] args) throws InterruptedEx...
分类:
编程语言 时间:
2016-06-12 02:38:53
阅读次数:
160
STM32的FSMC真是一个万能的总线控制器,不仅可以控制SRAM,NOR FLASH,NAND FLASH,PC Card,还能控制LCD,TFT.
不过有时候它也很诡异.如
*(volatile uint16_t *)0x60400000=0x0; // 实际是写入A21=1,而非A22....
分类:
其他好文 时间:
2016-06-12 02:30:12
阅读次数:
479
提纲 java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。本文大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java内存模型的设计目标,及其与处理器 ...
分类:
编程语言 时间:
2016-06-09 10:50:27
阅读次数:
166
static 一:静态,意思就是呆在一个地方,不想动,大概就是编译期间就确定地址了。首先了解下C中的进程内存布局: 1)正文段(代码段)——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在 ...
分类:
其他好文 时间:
2016-06-08 15:36:31
阅读次数:
196
转载:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html Java? 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时 ...
分类:
编程语言 时间:
2016-06-06 16:35:14
阅读次数:
225
这一章节我们来讨论一下使用volatile解决异步死循环。1.在讨论上面的问题前,我们引入另一个例子:同步死循环代码清单:package com.ray.deepintothread.ch03.topic_1;
public class DeadFor {
private boolean isStop = false;
public boolean isStop() {
return...
分类:
编程语言 时间:
2016-06-06 12:21:44
阅读次数:
250