1 基础概念
信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。
一个任务要想访问共享资源,首先必须得到信号量,获取信号量的操作将把信号量的值减1,若当前信号量的值为负数,表明无法获得信号量,该任务必须挂起在该信号量的等待队列等待该信号量可用;若当前信号量的值为...
分类:
其他好文 时间:
2014-10-23 12:35:07
阅读次数:
166
1 基础概念
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。
信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程...
分类:
其他好文 时间:
2014-10-23 10:45:39
阅读次数:
251
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java
并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。
Sem...
分类:
编程语言 时间:
2014-10-22 18:21:49
阅读次数:
291
实验二线程的实现和线程间的同步与互斥一、目的:1、了解在WINDOWS中线程的编程实现,掌握利用VC或DELPHI调用WINDOWS API建立线程。2、了解在WINDOWS中线程间同步与互斥的信号量的实现,并利用该原理实现在WINDOWS下模拟实现有关经典线程同步与互斥问题。二、内容:1、利用VC...
分类:
其他好文 时间:
2014-10-22 17:56:09
阅读次数:
149
问题描述: 公共汽车上,司机和售票员的活动分别是: 司机的活动:启动车辆;正常行车;到站停车。 售票员的活动:关车门;售票;开车门。 在汽车不断的到站、停站、行驶过程中,用信号量和P,V操作实现它们的同步...
分类:
系统相关 时间:
2014-10-22 01:12:38
阅读次数:
474
内容来自:http://blog.csdn.net/morewindows/article/details/7538247用的线程同步互斥机制——关键段、事件、互斥量、信号量。下面对它们作个总结,帮助大家梳理各个知识点。首先来看下关于线程同步互斥的概念性的知识,相信大家通过前面的文章,已经对线程同步...
分类:
编程语言 时间:
2014-10-21 11:43:33
阅读次数:
256
这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。
线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。
一提到池,我们会想到数据库连接池,但是线程池又如何呢?
建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。
关于我对同步的认识,要缘于...
分类:
编程语言 时间:
2014-10-21 01:04:37
阅读次数:
305
下面内容来自:http://blog.csdn.net/morewindows/article/details/7481609前面介绍了关键段CS、事件Event、互斥量Mutex在经典线程同步问题中的使用。本篇介绍用信号量Semaphore来解决这个问题。首先也来看看如何使用信号量,信号量Sema...
分类:
编程语言 时间:
2014-10-19 22:45:24
阅读次数:
227
1 一个资源同时可以有多个读写,但是只能有一个写锁2 用flag代表锁的状态,#define un_lock 0#define r_lock1 //上一把读锁加一个r_lock#define w_lock -1伪代码1 LOCK_Rpthread_lock(resource.mutex)while(...
分类:
其他好文 时间:
2014-10-19 12:51:23
阅读次数:
150
线程同步的方式包括:互斥锁、读写锁、条件变量、信号量和令牌。互斥锁和读写锁: 提供对临界资源的保护,当多线程试图访问临界资源时,都必须通过获取锁的方式来访问临界资源。(临界资源:是被多线程共享的资源)当读写线程获取锁的频率 差别不大时,一般采用互斥锁,如果读线程访问临界资源的频率大于写线程,这个时候...
分类:
编程语言 时间:
2014-10-19 01:14:37
阅读次数:
357