1. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数。 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样。 (一般情况下: 后面会讨论例外情况) alloc 对象分配后引...
分类:
移动开发 时间:
2015-06-18 19:14:10
阅读次数:
183
摘要:并发控制,是多任务操作系统必须面临和解决的一个问题。并发与互斥,主要是用于保护临界资源,如果不站在操作系统进程调度的角度,就很难理解并发与互斥的概念和应用。无论是抢占式操作系统,还是分时操作系统,对于临界资源的保护,都必须采用互斥的机制。Linux内核中,有多种并发控制的机制:自旋锁、原子变量、信号量、读写锁等等。不同的并发机制对应于不同的应用场合,比如说,自旋锁可以应用到中断处理函数中,信号量则不可以。本文主要从一个globalmem_lock例子来阐述信号量的使用。注:该例子取自《Linux设备驱...
分类:
系统相关 时间:
2015-06-16 09:17:54
阅读次数:
263
当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题...
分类:
编程语言 时间:
2015-06-15 09:10:03
阅读次数:
286
当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题。
在对数据的读写操作中,更多的是读操作,写操作较少,例如对数据库数据的读写应用。为了满足当前能够允许多个读出,但只允许一个写入的需求,线程提供了读写锁来实现。...
分类:
编程语言 时间:
2015-06-14 10:59:05
阅读次数:
173
基于我自己的版本:5.5.35-1ubuntu对http://blog.csdn.net/beiigang/article/details/39030695进行了修改。1)low_priority_updates在myisam表中此参数用于调整读锁和写锁的优先级。默认为0.注:(以***释来自网上)通过指定启动参数low-priority-updates,使MyISAM引擎默认给予..
分类:
数据库 时间:
2015-06-12 22:27:06
阅读次数:
519
建索引就是一个容易引起长时间写锁的问题,MongoDB在前台建索引时需要占用一个写锁(而且不会临时放弃),如果集合的数据量很大,建索引通常要花比较长时间,特别容易引起问题。解决的方法很简单,MongoDB提供了两种建索引的访问,一种是background方式,不需要长时间占用写锁..
分类:
数据库 时间:
2015-06-12 15:10:36
阅读次数:
179
多线程中,在互斥量和 读写锁的 属性中,都有一个叫 进程共享属性 。对于互斥量,查询和设置这个属性的方法为:
pthread_mutexattr_getpshared
pthread_mutexattr_setpshared我一开始不理解什么是 进程共享属性。 看了man中的说明如下The pthread_mutexattr_getpshared() function shall obtai...
分类:
编程语言 时间:
2015-06-09 22:04:12
阅读次数:
175
顺序锁是对读写锁的一种优化,只是为写者赋予更高的优先级。1.读执行单元绝对不会被写执行单元阻塞。即读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完..
分类:
其他好文 时间:
2015-06-08 15:15:59
阅读次数:
140
页级:引擎 BDB。表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , 单独的一行记录加锁表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中...
分类:
数据库 时间:
2015-06-04 11:38:54
阅读次数:
159
概述??MyISAM存储引擎只支持表锁,mysql的表锁有两种模式:读锁和写锁。他们的兼容关系是(对myisam的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作*)和(对myisam的写操作,则会阻塞其他用户对同一表的读和写操作),读写操作是串行的。如何加表锁??MyISAM在执行查询语句(select)前,会自动给涉及的所有表加上读锁。在执行更新操作(update,delete...
分类:
数据库 时间:
2015-06-03 21:45:30
阅读次数:
159