几个关键名词原子操作 原子操作:一个或多个指令的序列,对外是不可分的,即没有其他进程可以看到其中间状态或者中断此操作。互斥与同步 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况...
分类:
其他好文 时间:
2015-09-27 17:25:05
阅读次数:
225
我在之前一篇博文《初探c++11 Thread库之使写多线程程序》中,着重介绍了头文件中的std::thread类以及其上的一些基本操作,至此我们动手写多线程程序已经基本没有问题了。但是,单线程的那些"坑"我们仍还不知道怎么去避免。多线程存在的问题 多线程最主要的问题就是共享数据带来的问题...
分类:
编程语言 时间:
2015-09-24 22:37:49
阅读次数:
458
转自:http://coolshell.cn/articles/8239.html关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一...
分类:
其他好文 时间:
2015-09-15 12:45:24
阅读次数:
439
转自:http://blog.csdn.net/wilsonboliu/article/details/19190861为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作at...
分类:
其他好文 时间:
2015-09-15 10:56:57
阅读次数:
146
1、硬件的习性 流水线CPU,最好是顺序执行;内存引用,cpu与内存的关系;原子操作,使用锁、互斥量、临界区等方式,保证数据元素正确的执行顺序;内存屏障,内存屏障的作用是防止cpu为了提升性能而进行得乱序执行;缓存失效,cpu高速缓存对cpu间频繁访问的变量起反效果;分布式系统的IO操作。2、缓存一...
分类:
其他好文 时间:
2015-09-15 09:18:41
阅读次数:
148
产生竞态的情况:(1)对称多处理器(SMP)的多个CPU(2)单CPU的进程与抢占它的进程(3)中断与进程之间解决竞态途径:互斥访问临界区:访问共享资源的代码区互斥途径:中断屏蔽、原子操作、自旋锁、信号量、互斥体中断屏蔽local_irq_disable() /*屏蔽中断*/ ...critical...
分类:
系统相关 时间:
2015-09-07 19:34:58
阅读次数:
334
所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更...
分类:
编程语言 时间:
2015-09-07 14:25:10
阅读次数:
155
关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。 关于CAS等原子操作 在开始说无锁队列...
分类:
其他好文 时间:
2015-09-06 11:18:19
阅读次数:
185
当多个线程使用共享对象的时候,依次等待,这种我们通常叫着线程同步;下面介绍几种线程同步的方法:原子操作MutexSemaphoreSlimAutoResetEventManuualResetEventSlimCountDownEventBarrierReaderWriterLockSlim原子操作所...
分类:
编程语言 时间:
2015-09-04 17:10:09
阅读次数:
369
背景有时候必须访问变量、实例、方法、属性或者结构体,而这些并没有准备好用于并发访问,或者有时候需要执行部分代码,而这些代码必须单独运行,这是不得不通过将任务分解的方式让它们独立运行。当任务和线程要访问共享的数据和资源的时候,您必须添加显示的同步,或者使用原子操作或锁。之前的.NET Framewor...