信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。
编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V 操作使信号量加1。
在实际应用中两个进程间通信可能会使用多个信号量,因此 System V 的信号量以集合的概念来管理,具体操作和 Posix 信号量大同小异,详情请点此链接:http://blog.csdn.net/te...
分类:
系统相关 时间:
2015-08-20 20:57:34
阅读次数:
366
概述
进程是资源分配的基本单位,进程由线程组成。
线程是系统执行调度的基本单位,线程隶属于进程。
为何引入线程
1、进程在同一时间只能干一件事,比如我们在上课的时候,往往要耳朵听课,手记笔记,脑子思考,如果套用进程的机制,那么我们听课的时候也不能记录笔记,更不能思考。
2、当进程某个操作阻塞时,整个进程就会挂起,也就是说当老师讲课时需要思考的时候,我们也还只能听课,不能思考也不能记录...
分类:
编程语言 时间:
2015-08-20 17:02:12
阅读次数:
145
出处:http://blog.csdn.net/fanaticism1/article/details/9966163#1、锁提供了两种主要特性:互斥(mutual exclusion)和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访...
分类:
编程语言 时间:
2015-08-20 12:14:59
阅读次数:
111
Java 多线程
在Java中,线程类Thread创建方式有两种:一是继承Thread类,重写run方法;二是,实现Runnable接口。大多数情况下,推荐使用第二种方式,实现runnable接口,这样可以很好的将任务与执行单元分离,更加突出面向对象的思想。
在JDK1.5之前,线程间互斥主依靠内置锁(监视器),而线程间通信则采用Object实例的wait,notify等方法。在JDK1.5之...
分类:
编程语言 时间:
2015-08-19 16:51:23
阅读次数:
141
9.5 信号量内核对象(Semaphore)(1)信号量的组成 ①计数器:该内核对象被使用的次数 ②最大资源数量:标识信号量可以控制的最大资源数量(带符号的32位) ③当前资源数量:标识当前可用资源的数量(带符号的32位)(2)信号量的使用规则 ①如果当前资源计数>0,那么信号量处于触发状态...
分类:
编程语言 时间:
2015-08-19 14:49:04
阅读次数:
152
在 POSIX 标准中,信号量分两种,一种是无名信号量,一种是有名信号量。无名信号量一般用于线程间同步或互斥,而有名信号量一般用于进程间同步或互斥。它们的区别和管道及命名管道的区别类似,无名信号量则直接保存在内存中,而有名信号量要求创建一个文件。前面我们学习了无名信号量的使用(详情请看《无名信号量》),这里我们学习有名信号量的使用。
1)创建一个有名信号量
所需头文件:
...
分类:
系统相关 时间:
2015-08-19 11:24:27
阅读次数:
306
信号量概述
信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。
编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞。PV
原语是对信号量的操作,一次 P 操作使信号量减1,一次 V 操作使信号量加1。
信号量主要用于进程或线程间的同步和互...
分类:
编程语言 时间:
2015-08-19 11:21:16
阅读次数:
178
单进程的线程可以使用临界资源对象来解决同步互斥问题,该对象不能保证哪个线程能够获得到临界资源对象,因而该系统能公平的对待每一个线程。
每个进程中访问临界资源的那段代码称为临界区(Critical Section)(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。...
分类:
编程语言 时间:
2015-08-19 11:20:38
阅读次数:
142
下面一段摘自网络,我觉得这是非常好的。锁是理解非常有帮助。“为什么要加锁?加锁是为了防止不同的线程訪问同一共享资源造成混乱。打个例如:人是不同的线程,卫生间是共享资源。你在上洗手间的时候肯定要把门锁上吧。这就是加锁,仅仅要你在里面。这个卫生间就被锁了,仅仅有你出来之后别人才干用。想象一下假设卫生间的...
分类:
其他好文 时间:
2015-08-19 10:45:26
阅读次数:
131
信号量
信号量是互斥锁的升级版把互斥锁中1变成了n,举个简单的例子:假设现在有10个人,有一部手机,这10个人都竞争来使用手机打电话这就是互斥锁。对于信号量,现在可能是有4部手机,这10个人都竞争来使用手机打电话。相比互斥锁信号量由1变成了4。信号量相也就是操作系统中pv操作,它广泛应用进程或者线程间的同步与互斥。...
分类:
编程语言 时间:
2015-08-18 22:57:51
阅读次数:
163