关于CoreData和SQLite多线程访问时的线程安全问题数据库读取操作一般都是多线程访问的。在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱。IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两者都需要设置线程安全,在这里以FMDB来...
分类:
数据库 时间:
2015-08-03 16:30:58
阅读次数:
175
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。先回顾一下一个常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationE...
分类:
其他好文 时间:
2015-08-02 23:05:43
阅读次数:
136
网上乱逛看到的强力面试题list,问别人问自己都是好干货,存了。以下是题目[※]@property中有哪些属性关键字?属性相关的关键字,可以按照一些功能来分类线程相关atomic:默认为该属性,功能为在多线程的情况下,编译器自动生成相应的线程安全代码,达到互斥加锁的目的,避免所对应的变量出现读写不同...
分类:
移动开发 时间:
2015-08-02 06:22:10
阅读次数:
222
SQL Server 中的 NOLOCK 到底是什么意思
一般用于此类语句中:select * from t with(NOLOCK)
nolock是不加锁查询,可以读取被事务锁定的数据,也称为脏读。
说明:
使当前会话的查询,不受其它会话的事务所阻塞。
但是这样做,就读取了其它事务的“修改后未提交的”数据。
也就是允许“READ UNCOMMITTED”
下...
分类:
数据库 时间:
2015-08-01 12:59:22
阅读次数:
149
上次百度面试,对方问了一个锁你都用过哪些?
由于才疏学浅,我只说了两个,一个NSLock 还有一个是@synchronized.
回来看文档才知道原来有好多种,下面一一介绍下
@synchronized():这玩意是对括号内的内容进行加锁,保证线程安全,一般用在伪单例的使用中
NSLock:顾名思义,就是一个简单的锁,通过alloc创建后使用,具备lock,unlock以及lockBeforeD...
分类:
移动开发 时间:
2015-07-29 14:12:01
阅读次数:
128
安全解决 -- 互斥锁@synchronized(self) { //开始加锁,操作}优:解决多线程抢夺资源产生的数据安全问题缺:消耗CPU资源多使用前提:多条线程执行一块代码时加锁线程同步:@synchronized()多条线程在同一条线上执行(按顺序执行,与线程并发不同)nonatomic 与 ...
分类:
编程语言 时间:
2015-07-29 09:06:31
阅读次数:
147
【引言】数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁....
分类:
数据库 时间:
2015-07-28 12:43:38
阅读次数:
141
并行集合
对于并行任务,与其相关紧密的就是对一些共享资源,数据结构的并行访问.经常要做的就是对一些队列进行加锁-解锁,然后执行类似插入,删除等等互斥操作. .NET4提供了一些封装好的支持并行操作数据容器,可以减少并行编程的复杂程度.
并行集合的命名空间:System.Collections.Concurrent
并行容器:
ConcurrentQueue
ConcurrentSt...
当你添加了源,更新源的时候,如果中途中断了更新,安装软件或者再次更新的时候就是出现如下提示, E: 无法获得锁 /var/lib/apt/lists/lock – open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁...
分类:
系统相关 时间:
2015-07-27 11:20:26
阅读次数:
192
一:概述实际学习和工作中,我们经常会遇到读写大量数据的情况,这个时候我们可能就用到了循环缓冲区。循环缓冲区在处理大量数据的时候有很大的优点,循环缓冲区在一些竞争问题上提供了一种免锁的机制,免锁的前提是,生产者和消费都只有一个的情况下,否则也要加锁。二:循环缓冲区的实现理论如下图三:实现代码如下所示:...
分类:
编程语言 时间:
2015-07-27 01:49:15
阅读次数:
214