四种并发控制机制:原子操作、自旋锁、信号量和完成量。原子变量操作原子变量操作绝对不会再执行完毕前被任何其他任务或事件打断。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树中的include/asm/atomic.h文件中,它们都是使用汇编语言实现的。常用于多个应用...
分类:
系统相关 时间:
2015-04-17 22:08:13
阅读次数:
245
线程并发的生产者-消费者模型:1.两个进程对同一个内存资源进行操作,一个是生产者,一个是消费者。2.生产者往共享内存资源填充数据,如果区域满,则等待消费者消费数据。3.消费者从共享内存资源取数据,如果区域空,则等待生产者填充数据。4.生产者的填充数据行为和消费者的消费数据行为不可在同一时间发生。下面...
信号量(也叫信号灯)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。信号量是进程/线程同步的一种方式,有时候我们需要保护一段代码,使它每次只能被一个执行进程/线程运行,这种工作就需要一个二进制开关;有时候需要限制一段代码可以被多少个进程/线程执行,这就需要用到关于计数信号量。信号量...
分类:
系统相关 时间:
2015-04-17 17:20:07
阅读次数:
207
上一篇介绍了通过lock关键字和Monitor类型进行线程同步,本篇中就介绍一下通过同步句柄进行线程同步。在Windows系统中,可以使用内核对象进行线程同步,内核对象由系统创建并维护。内核对象为内核所拥有,所以不同进程可以访问同一个内核对象, 如进程、线程、事件、信号量、互斥量等都是内核对象。其中...
分类:
编程语言 时间:
2015-04-17 13:45:00
阅读次数:
259
1.进程间通讯的目的(1)数据传输(2)资源共享(3)通知事件(4)进程控制2.通讯发展(1)UNIX进程间通讯(2)基于System V进程间通讯(3)POSIX进程间通讯3.POSIX标准4.进程间通讯的主要方式(1)无名管道(2)有名管道(3)信号(4)消息队列(5)共享内存(6)信号量(7)...
分类:
其他好文 时间:
2015-04-16 21:39:10
阅读次数:
123
1.进程同步:各进程按照一定的顺序执行的过程。异步就不一定有顺序,而是随机的执行。一组并发进程进行互相合作,互相等待,使得各进程按照一定的顺序执行的过程。2.system系统调用可以按照字符串方式调用系统命令。3.生产者只需要释放信号量;消费量只需要获取而不需要释放4.信号量初始值等于0,在互斥通讯...
分类:
其他好文 时间:
2015-04-16 21:35:48
阅读次数:
108
1.产生背景:有些资源呗多个进程同时访问的时候,可能出现数据混乱的现象2.定义:信号量有名信号灯。主要是用来保护临界资源(进程互斥)。进程可以根据他判定是否可以访问临界资源。还可以用于进程同步。实质:一个数字操作:获取和释放。利用信号量的值判断是否可以操作,大于0可以。0不可以。所以在创建操作之前一...
分类:
其他好文 时间:
2015-04-16 21:13:58
阅读次数:
117
先说说线程
在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.
将一些敏感操作变成原子操作,保证同一时刻多个线程中只有同一个线程在执行这个原子操作。
我最常用的是互斥锁,也称独占锁。其次还有读写锁,信号量,条件变量等。
除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作。
其实在线程中,也可...
分类:
编程语言 时间:
2015-04-16 17:34:25
阅读次数:
217
当事件控制块类型为OS_Event_Type_SEM类型时就是信号量,包含2个内容:信号量计数器OSEventcnt和等待列表OSEventTbl[].一创建信号量:OSSemCreat(int16u cnt);其参数表明信号量计数器的初值。该函数创建后等待列表都为0(即没有等待任务),因为等该信号...
分类:
其他好文 时间:
2015-04-16 14:07:19
阅读次数:
130
1.基本概念同步:指定线程的执行顺序,比如有两个线程A,B都要访问资源的时候,B执行了途中需要A的结果,所以B先让出资源,等A执行结束后再执行B互斥:多个线程访问系统资源的时候,同时只能有一个线程对资源进行访问2.线程间的同步和互斥是通过操作系统中信号量和PV原语来实现的PV操作是由P操作原语和V操...
分类:
编程语言 时间:
2015-04-15 18:48:37
阅读次数:
221