上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,如今来个复杂点的。这个问题涉及到线程的同步和相互排斥,是一道很有代表性的多线程同步问题,假设能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描写叙述:主线程启动10个子线程并将表示子线程...
分类:
编程语言 时间:
2014-10-05 16:13:48
阅读次数:
268
最近在用户态下突然需要用到原子变量,又不想自己编译boost,思来索去,无意中竟发现gcc还有这一组内置函数. //先做操作,再返回变化后的值
type?__sync_fetch_and_add?(type?*ptr,?type?value);
typ...
分类:
其他好文 时间:
2014-10-03 15:11:55
阅读次数:
191
Boost Lockfree
flyfish 2014-9-30
为了最大限度的挖掘并行编程的性能考虑使用与锁无关的数据结构来编程
与锁无关的数据结构不是依赖于锁和互斥来确保线程安全。
Lockfree的重要操作就是CAS(Compare And Set)原子操作
原子操作就是多个线程访问同一个资源时,有且仅有唯一 一个线程对该资源进行操作
BOOST中的宏定义
BOOST_...
分类:
其他好文 时间:
2014-09-30 16:31:43
阅读次数:
160
众所周知,多线程下计数存在着计数不正确的问题。这个问题的根源在于多个线程对同一个变量可以同时访问(修改)。这样就造成了修改后的结果不一致。
首先在这里先强调一点,volatile 关键字并不能提供多线程安全访问。因为有volatie修饰的变量,每次操作时遵循下面动作:
从内存取值 ---> 放入寄存器 ---> 操作 --->写回内存
这几个步骤不是原子的操作在任意两个...
分类:
编程语言 时间:
2014-09-28 20:09:16
阅读次数:
379
一、信息系统的开发架构客户层-------显示层-------业务层---------数据层---------数据库1.客户层:客户层就是客户端,简单的来说就是浏览器。2.显示层:JSP/Servlet,用于给浏览器显示。3.业务层:对于数据层的原子操作进行整合。4.数据层:对于数据库进行的原子操作...
分类:
编程语言 时间:
2014-09-26 20:31:18
阅读次数:
177
在上文《.Net中的并行编程-2.ConcurrentQueue的实现与分析》 中解释了无锁的相关概念,无独有偶BCL提供的ConcurrentQueue也是基于原子操作实现, 由于ConcurrentQueue的代码较多所以本文主要分析几个常用操作:入队(EnQueue) 、出队(TryDequ....
分类:
Web程序 时间:
2014-09-26 01:15:57
阅读次数:
245
在上篇文章《.net中的并行编程-1.基础知识》中列出了在.net进行多核或并行编程中需要的基础知识,今天就来分析在基础知识树中一个比较简单常用的并发数据结构--.net类库中无锁栈的实现。 首先解释一下什么这里“无锁”的相关概念。 所谓无锁其实就是在普通栈的实现方式上使用了原子操作,原子操作的原理...
分类:
Web程序 时间:
2014-09-26 00:24:47
阅读次数:
216
??
1线程为什么要同步
A:共享资源,多个线程都可对共享资源操作。
B:线程操作共享资源的先后顺序不确定。
C:处理器对存储器的操作一般不是原子操作。
2互斥量
mutex操作原语
pthread_mutex_t
pthread_mutex_init
pthread_mutex_destroy
pthread_mutex_lock
...
分类:
编程语言 时间:
2014-09-25 20:41:07
阅读次数:
309
i++分为三个阶段:内存到寄存器寄存器自增写回内存这三个阶段中间都可以被中断分离开.i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?i++只需要执行一条指令,并不能保证多个线程i++,操作同一个i,可以得到正确的结果。因为还有寄存器的因素,多个cpu对应多个寄存器。每次要先把...
分类:
其他好文 时间:
2014-09-23 22:48:05
阅读次数:
642
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
来看AtomicInteger提供的接口。
//获取当前的值
public final int get()
//取当前的值,并设置...
分类:
编程语言 时间:
2014-09-22 12:35:22
阅读次数:
149