1、原子操作,是其它同步方法的基础。2、自旋锁,线程试图获取一个已经被别人持有的自旋锁,当前线程处于忙等待,占用cpu资源。3、读写自旋锁,根据通用性和针对性的特点,普通自旋锁在特定场景下的表现会退化。因此,提供了读写自旋锁,读锁可以加读锁,不能加写锁,写锁不能加任何锁。4、需要注意的几项: 普通....
分类:
系统相关 时间:
2015-08-13 21:43:15
阅读次数:
265
中间彻底中断整个流程的话,就不知道整体到底怎么回事了。而且会造成资源泄漏、程序员得不到预定的结果(哪怕是失败的结果,也要按照程序员的格式来记录)。此外,内部原子操作不必记录错误(否则对同一个文件错误,会有太多的记录,反而也没法再细究了),记录外部的逻辑结果错误即可。这样,还可以一次性返回 retur...
分类:
编程语言 时间:
2015-08-12 00:55:09
阅读次数:
196
一次聊天,谈到了死锁的解决、可重入锁等等,突然发现这些离自己很远,只有一些读书时的概念涌入脑海,但各自的应用场景怎么都无法想出。痛定思痛,决定看看concurrent包里涉及并发的类及各自的应用场景。第一类:原子操作类的atomic包,里面包含了1)布尔类型的AtomicBoolean2)整型Ato...
分类:
编程语言 时间:
2015-08-11 13:34:48
阅读次数:
205
atomic:原子操作(原子性是指事务的一个完整操作,操作成功就提交,反之就回滚. 原子操作就是指具有原子性的操作)在objective-c 属性设置里面默认的就是atomic,意思就是setter/getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完sette...
分类:
移动开发 时间:
2015-08-11 11:55:32
阅读次数:
100
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 来看Ato...
分类:
编程语言 时间:
2015-08-09 07:19:11
阅读次数:
141
作为一个架构师,有些规则是必须要掌握的,这就想软件的公理,如果你学物理不知道牛顿定律,那就不要学了。在软件行业也有类似的东西,我称之为软件定律。例如:ACID,CAP,BASEACID传统数据库系统中,事务具有ACID 4个属性(1)原子性(Atomicity):事务是一个原子操作单元,其对数据的修...
分类:
其他好文 时间:
2015-08-08 10:22:34
阅读次数:
159
1.首先要明白一个概念 JAVA中主内存和线程工作内存的概念。 如果有一个static的变量,值会存储在主内存。如果多个线程访问这个变量,每个线程都会将变量的值拷贝到自己的工作内存,之后的操作就是针对自己工作内存里副本的操作,最后再写回主内存 明显,上面的操作非原子操作,会出现经典的多线程问题: ....
分类:
编程语言 时间:
2015-08-07 00:16:49
阅读次数:
133
http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Atomic-Builtins.htmlgcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。5.47 Built-in functions for atomic ...
分类:
其他好文 时间:
2015-08-06 10:54:49
阅读次数:
132
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。来看AtomicInteger提供的接口。//获取当前的...
分类:
编程语言 时间:
2015-08-05 17:49:41
阅读次数:
124
Atomic简介
Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个...
分类:
其他好文 时间:
2015-07-31 16:13:24
阅读次数:
200