信号量在整个系统可以被任意线程获取并释放,也就是说,同一个信号量可以被系统中的一个线程获取之后由另一个线程释放。而互斥量则要求哪个线程获取了互斥量,哪个线程就要负责释放,其它线程去释放互斥量是无效的。互斥量和信号量在系统的任何进程里都是可见的,也就是说,一个进程创建了一个信号量或互斥量,另一个进程试...
分类:
其他好文 时间:
2015-09-19 18:19:00
阅读次数:
137
方法一,@synchronized(id anObject),(最简单的方法)会自动对参数对象加锁,保证临界区内的代码线程安全1 @synthesize(self)2 {3 //这段代码对其它 @synthesize(self) 都是互斥的4 5 ...
分类:
移动开发 时间:
2015-09-18 21:46:38
阅读次数:
229
临界区设置锁,当有线程进入临界区后设置为锁止状态,其它线程访问同一临界区锁控制的变量时被阻塞。具体例程见以下链接:http://blog.csdn.net/ccrrt/article/details/8099297上述链接中同时涵盖了WaitForMultipleObjects()函数的使用范例。
线程间通信的两个基本问题是互斥和同步。同步:一个线程的执行依赖于另一个线程的消息。互斥:对共享资源的排他性,一个线程必须等待别的线程释放公共资源之后才能继续执行。同步机制(Win32中):事件,信号量,互斥量,临界区各种同步方式:#全局变量win32多线程通信的最方式,但用全局变量同步会有两个弊端,...
分类:
编程语言 时间:
2015-09-18 00:49:54
阅读次数:
239
1、硬件的习性 流水线CPU,最好是顺序执行;内存引用,cpu与内存的关系;原子操作,使用锁、互斥量、临界区等方式,保证数据元素正确的执行顺序;内存屏障,内存屏障的作用是防止cpu为了提升性能而进行得乱序执行;缓存失效,cpu高速缓存对cpu间频繁访问的变量起反效果;分布式系统的IO操作。2、缓存一...
分类:
其他好文 时间:
2015-09-15 09:18:41
阅读次数:
148
读写自旋锁1:什么是自旋锁?自旋锁就是互斥的同步原语,试图进入临界区的线程只用忙等的方式检测锁的状态。如果检测到锁未被持有,则进入临界区。因为采用忙等的方式,所以自旋锁必须是锁住很小的一块儿代码,并且很短的时间片。2:读写自旋锁?有些线程在临界区内只是简单的读取一些信息,不会涉及到信息的修改,允许读...
分类:
其他好文 时间:
2015-09-11 10:36:03
阅读次数:
191
产生竞态的情况:(1)对称多处理器(SMP)的多个CPU(2)单CPU的进程与抢占它的进程(3)中断与进程之间解决竞态途径:互斥访问临界区:访问共享资源的代码区互斥途径:中断屏蔽、原子操作、自旋锁、信号量、互斥体中断屏蔽local_irq_disable() /*屏蔽中断*/ ...critical...
分类:
系统相关 时间:
2015-09-07 19:34:58
阅读次数:
334
1、进程是并发过程中程序的执行过程2、进程的特征:结构特征动态性并发性独立性异步性3、临界区指在每个进程中访问临界资源的那段代码4,现在操作系统中申请资源的基本单位是进程,在CPU得到执行的基本单位是线程,进程是由程序段、数据段、PCB组成的5,对临界资源应采取互斥访问方式来实现共享6,P.V操作是...
分类:
其他好文 时间:
2015-09-04 07:34:43
阅读次数:
262
GCD基础部分注:本节主要详细讲解线程同步的一些基本概念和GCD基础部分GCD (Grand Central Dispatch)
首先我们来了解处理线程中的一些基本概念 :
串行:同时只能有一个任务被执行
并发:同时可以有多个任务执行
同步:同步任务会阻塞当前线程,知道任务完成
异步:预定的任务会完成但不会等它完成,因此,一个异步函数不会阻塞当前线程去执行下一个函数。
临界区:就是一段代码不能被并...
分类:
编程语言 时间:
2015-08-29 00:55:03
阅读次数:
584
关键代码段,也称为临界区,工作在用户方式下,它是指一小段代码,在代码能够执行前,它必须独占对某些资源的访问权。CRITICAL_SECTION型结构体。关键代码段的相关函数:InitializeCriticalSection函数:进入关键代码段前需要进行初始化。EnterCriticalSectio...
分类:
编程语言 时间:
2015-08-20 10:18:52
阅读次数:
128