原子操作,线程间交互数据最细粒度的同步操作,它可以保证线程间读写某个数值的原子性。
由于不需要加重量级的互斥锁进行同步,因此非常轻量,而且也不需要在内核间来回切换调度,效率是非常高的。。
那如何使用原子操作了,各个平台下都有相关api提供了支持,并且向gcc、clang这些编译器,也提供了编译器级的__builtin接口进行支持
windows的Interlockedxxx和Interlockedxxx64系列api
macosx的OSAtomicXXX系列api
gcc的__sync_val_compare_and_swap和__sync_val_compare_and_swap_8等__builtin接口
x86和x86_
继续阅读 »
/**
* 【数据结构类】一种计算机,其有如下原子功能:
* 1.赋值
* 2.+1操作 ++a;a+1;
* 3.循环,但是只支持按次数的循环for(变量名)(循环里面对变量的修改不影响 循环次数)
* 4.只能处理0和正整数
* 5.函数调用 fun(参数列表)
* 在这个计算机上编程实现变量的加法减法,乘法
**/
//add operation
fun_add(a,b)
{
for(b)
++a;
return a;
}
//redu
继续阅读 »
Lucene 事务
有过数据库经验的人都知道ACID特性,原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。由于隔离性的存在,对于新的变更包括添加、修改、删除,如果不进行 commit 的话,那么在读端是无法看到数据的变化的,在这里简单的介绍下 Lucene 中的事务,即ACID。
原子性
当你在一次 IndexWriter 的 session 中做操作(增加,删除文档),然后 commit,要么你的所有的操作修改都是可见的(commit 成功),要么所有的操作修改都不可见(commit 失败),绝不会处于某种中间状态。有些
继续阅读 »
一、事务的4个基本特征
原子性 (Atomicity )
要么全执行,要么都不执行。
一致性( Consistency )
事务在系统完整性中实施一致性,这通过保证系统的任何事务最后都处于有效状态来实现。
隔离性 ( Isolation)
在隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。
持久性 (Durabilily)
持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的。
二、为什么需要对事务并发控制
如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形
继续阅读 »