对无锁队列的最初兴趣来自梁斌同志的一个英雄帖:http://coderpk.com/。第一次看到这个题目的时候还不知道CAS,FAA等所谓的“原子操作”,但直觉上感觉,通过对读写操作的性能优化来达到大幅提高队列性能的方法是行不通的,就算读写操作全用汇编来写,也不会和正常的read及write有数量级...
分类:
编程语言 时间:
2015-04-26 10:42:57
阅读次数:
398
atomic:原子操作(原子性是指事务的一个完整操作,操作成功就提交,反之就回滚. 原子操作就是指具有原子性的操作)在objective-c 属性设置里面默认的就是atomic,意思就是setter/getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完sette...
分类:
移动开发 时间:
2015-04-18 11:16:48
阅读次数:
474
四种并发控制机制:原子操作、自旋锁、信号量和完成量。原子变量操作原子变量操作绝对不会再执行完毕前被任何其他任务或事件打断。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树中的include/asm/atomic.h文件中,它们都是使用汇编语言实现的。常用于多个应用...
分类:
系统相关 时间:
2015-04-17 22:08:13
阅读次数:
245
先说说线程
在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.
将一些敏感操作变成原子操作,保证同一时刻多个线程中只有同一个线程在执行这个原子操作。
我最常用的是互斥锁,也称独占锁。其次还有读写锁,信号量,条件变量等。
除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作。
其实在线程中,也可...
分类:
编程语言 时间:
2015-04-16 17:34:25
阅读次数:
217
Redis是一个开源, BSD许可和高级键值缓存和存储。由于键能包含strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs, 所以它经常被称为数据结构服务器。 你可以在这些类型上进行原子操作,如附加到一个字符串;递增哈希中的值;将元素放入列表;进行集合的交,并和差运算;或者从排序集合中获得排在最前面的成员。...
分类:
其他好文 时间:
2015-04-15 09:41:35
阅读次数:
194
转载地址:http://www.cnblogs.com/FrankTan/archive/2010/12/11/1903377.html gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。 其声明如下: type?__sync_fetch_and_add?(ty...
分类:
编程语言 时间:
2015-04-13 19:09:47
阅读次数:
179
这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自...
分类:
编程语言 时间:
2015-04-13 16:55:24
阅读次数:
163
atomic:原子操作,在多线程环境下提供操作保护;nonatomic:非原子操作,不提供保护,在多线程环境下可能发生未知错误;retain:保持引用,也就是对象的引用计数值 count += 1,由此得到的对象和传入的对象指向的是同一内存空间,相当于指针赋值;assign:赋值操作,会在内存中开辟...
分类:
移动开发 时间:
2015-04-13 12:27:41
阅读次数:
114
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来...
分类:
其他好文 时间:
2015-04-12 21:00:42
阅读次数:
123
一、对事务的支持事务:是一组原子操作的工作单元,要么全部成功,要么全部失败Spring管理事务方式:JDBC编程事务管理:--可以控制到代码中的行 可以清楚的控制事务的边界,事务控制粒度化细(编程的方式)JDBC声明事务管理---可以控制到方法 事务相关API不用介入程序之中,将事务管理与实际业务代...
分类:
编程语言 时间:
2015-04-12 18:56:17
阅读次数:
272