事务并发:指事务能够在同一时间同时执行存在的问题:1、丢失修改(T1和T2同时修改,T2的结果将T1的结果覆盖)2、读脏数据(T1修改后,T2读取,但是T1撤销修改)3、不能重复读(T1前后读的数据不同)并发控制:锁:互斥锁(X)、共享锁(S)、U锁2段锁协议:分两个阶段,第一阶段只能申请锁;第二阶...
分类:
数据库 时间:
2014-09-01 00:18:52
阅读次数:
205
原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38948683
条款29:为“异常安全”而努力是值得的
看完这个条款,第一感觉就是之前写的代码多么具有风险。
先看一个书上的例子,假设有个class用来表现夹带背景图案的GUI菜单,这个class也要用于多线程环境当中,所以我们考虑用了一个互斥器(mutex...
分类:
编程语言 时间:
2014-08-31 23:06:32
阅读次数:
535
管程的概念
管程 (英语:Moniters,也称为监视器) 是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享资源。
这些共享资源一般是硬件设备或一群变量。管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。
与那些通过修改数据结构实现互斥访问的并发程序设计相比,管程实现很大程度上简化了程序设计。
管程提供了一种机制,线程可以临时放弃互斥访问,等待某...
分类:
编程语言 时间:
2014-08-31 23:00:52
阅读次数:
275
互斥量是一个内核对象,它用来确保一个线程独占一个资源的访问,并且互斥量可以用于不同进程中的线程互斥访问资源。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与C# Mutex对象的关系也正是如此,线程...
分类:
编程语言 时间:
2014-08-29 17:45:18
阅读次数:
236
互斥体实现了“互相排斥”(mutual exclusion)同步的简单形式(所以名为互斥体(mutex))。互斥体禁止多个线程同时进入受保护的代码“临界区”。因此,在任意时刻,只有一个线程被允许进入这样的代码保护区。 任何线程在进入临界区之前,必须获取(acquire)与此区域相关联的互斥体的所有....
分类:
其他好文 时间:
2014-08-29 12:25:27
阅读次数:
224
线程互斥多线程运行时,通常会访问同一个变量,同一个数据结构,或者同一段代码。因此,需要使用互斥技术来保护上述资源,确保多线程执行的正确性。注:我们通常说某个函数是线程安全的,也就是因为该函数实现加入了线程互斥保护。4.1、QMutexQMutex( RecursionModemode= NonRec...
分类:
编程语言 时间:
2014-08-29 10:45:57
阅读次数:
286
方法一:(用互斥锁实现)1、ARC中单例模式的实现:1.1在.m中保留一个全局的static的实例static id _instance;1.2重写allocWithZone:方法,在这里创建唯一的实例(注意线程安全)+ (id)allocWithZone:(struct_NSZone*)zone{...
分类:
其他好文 时间:
2014-08-28 22:30:56
阅读次数:
361
死锁的条件 互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。 不可抢占条件(No pre-emption) :有些系统资源是不可抢占的,当...
分类:
其他好文 时间:
2014-08-27 18:39:18
阅读次数:
152
信号量的分类Mutual Exclusion Semaphores(互斥):一种特殊的二进制信号量,专门针对互斥操作进行了优化。Binary Semaphores(二进制):完成互斥、同步操作的最佳方式;速度最快,最常用。Counting Semaphores(计数):类似于二进制信号量,可记录信号...
分类:
其他好文 时间:
2014-08-27 16:10:07
阅读次数:
199
思路 生产者和消费者(互斥与同步)。资源用队列模拟(要上锁,一个时间只能有一个线程操作队列)。 m个生产者。拿到锁,且产品不满,才能生产。当产品满,则等待,等待消费者唤醒。当产品由空到不空,通知消费者。n个消费者。拿到锁,且有产品,才能消费。当产品空,则等待,等待生产者唤醒。当产品由满到不满,通知生...
分类:
编程语言 时间:
2014-08-27 01:31:26
阅读次数:
380