临界区: 临界区是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。这是让若干代码能够"以原子操作方式"来使用资源的一种方法。 所谓原子(atomic)操作方式,是指这段代码知道没有别的线程要访问这个资源. 说明: 1. MacOSX,Windows有自己的线程模型, pthread可 ...
分类:
编程语言 时间:
2016-04-21 10:08:16
阅读次数:
167
转自:http://blog.csdn.net/goodluckwhh/article/details/9005585 版权声明:本文为博主原创文章,未经博主允许不得转载。 转自:http://blog.csdn.net/goodluckwhh/article/details/9005585 版权声 ...
分类:
系统相关 时间:
2016-04-20 19:50:31
阅读次数:
602
一、信号量:(数据操作锁)控制进程间互斥、同步等,协调多个程序同时访问一个共享资源。工作原理:信号量只能有两种操作等待和操作,即:PV操作,必须是原子操作。P(sv):如果sv的值大于零就减一;如果它的值为零,就挂起;V(sv):如果有被挂起的,恢复运行,如果没有就加一..
分类:
其他好文 时间:
2016-04-19 20:15:37
阅读次数:
136
mongodb不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求mongodb保证数据的完整性。 但是mongodb提供了许多原子操作,比如文档的保存,修改,删除等,都是原子操作。 所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查询到 ...
分类:
数据库 时间:
2016-04-19 19:31:02
阅读次数:
184
在整型信号量机制中,信号量被定义为一个整形变量。除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问。其通常分别被称为P、V操作。 描述如下: P操作:S=S-1;如果S小于0,则进程进入等待状态,否则继续执行。 V操作:S=S+1;如果S>=0,则唤醒等待队列中的一个等待 ...
分类:
其他好文 时间:
2016-04-16 23:01:34
阅读次数:
226
并发问题:现代操作系统支持多任务的并发,并发在提高计算资源利用率的同时也带来了资源竞争的问题。例如C语言语句“count++;”在未经编译器优化时生成的汇编代码count++:moveax,[count]inceaxmov[count],eax当操作系统内存在多个进程同时执行这段代码时,就可能带来并发问题。..
分类:
系统相关 时间:
2016-04-16 19:40:06
阅读次数:
287
对象的共享 一、可见性 在没有同步的情况下,编译器以及运行时等收可能对操作的执行顺序进行一些意想不到的调整,在缺乏足够同步的多线程程序中,要想对内存操作的执行顺序进行判断,几乎无法得到正确的结论。 1.缺乏同步的程序中可能出产生错误结果的一种情况:失效数据 2.非原子操作 当线程在没有同的情况下读取 ...
分类:
其他好文 时间:
2016-04-14 14:10:02
阅读次数:
108
1. 引言 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。 2. 术语定义 3. 处理器如何 ...
分类:
其他好文 时间:
2016-04-13 23:50:40
阅读次数:
329
一、概述 和其他数据库一样,Redis 同样是支持事务的。Redis 的事务可以通过 MULTI/EXEC/DISCARD/WATCH 四个命令来实现。那么 Redis 的事务有哪些特点呢? 1). 事务是一个原子操作,事务中的命令要么都执行,要么都不执行。 2). 事务中的所有命令将按照顺序依次执 ...
分类:
其他好文 时间:
2016-04-13 20:29:43
阅读次数:
185
版权声明:本文为博主原创文章,未经博主允许不得转载。 版权声明:本文为博主原创文章,未经博主允许不得转载。 上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,现在来个复杂点的。这个问题涉及到线程的同步和互斥,是一道非常有代表性的多线程同步问题,如果能 ...
分类:
编程语言 时间:
2016-04-13 00:14:54
阅读次数:
157