信号量又名信号灯,与其他进程间通信方式大不相同,主要用途是用来保护临界资源。进程可以根据它判断是否能访问某些共享资源。除了用于访问控制外,还可以用于进程同步。
分类:
二值信号灯:信号灯的值只能取0或1,类似与互斥锁。但两者有不同:信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强调进程,占用资源的进程使用完资源后,必须有进程本身来解锁。(我们常说的PV操...
分类:
系统相关 时间:
2015-08-15 18:28:03
阅读次数:
208
条件变量是线程同步的另一种手段,主要逻辑就是等待和唤醒。条件不满足时,线程等待;条件满足,线程被(其他线程)唤醒。条件变量一般和互斥量一起使用,因为需要保证多线程互斥地修改条件。涉及到的函数有:int pthread_cond_init(pthread_cond_t *restrict cond.....
分类:
编程语言 时间:
2015-08-15 18:07:36
阅读次数:
115
进程间通讯介绍1、几种进程间的通信方式# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量...
分类:
编程语言 时间:
2015-08-14 15:29:03
阅读次数:
156
互斥锁1、函数声明#include /* Mutex handling. *//* Initialize a mutex. */extern int pthread_mutex_init (pthread_mutex_t *__mutex, __const p...
分类:
其他好文 时间:
2015-08-14 13:36:59
阅读次数:
334
[笔记][Java7并发编程实战手册]系列目录简介本文学习信号量Semaphore机制。Semaphore
本质是一个共享锁
内部维护一个可用的信号集,获取信号量之前需要先申请获取信号数量;用完之后,则需要释放信号量;如果不释放,那么其他等待线程则一直阻塞直到获取信号量或则被中断为止
本人的理解是:互斥锁是同一时间只能一个线程访问,而在这里,是同一时间允许获取到了信号量的线程并发访问,而没有获取到信...
分类:
编程语言 时间:
2015-08-13 23:47:22
阅读次数:
264
在linux多线程同步中,除了互斥量以外,pthread提供了另一种同步机制:条件变量。正如名字一样,条件量允许线程由于一些未达到的条件而阻塞。 条件变量与互斥量经常一起使用。这种模式用于让一个线程锁住一个变量,然后当它不能获得它期待的结果时等待一个条件变量。最后另一个线程会向他发出信号,使它可以继...
分类:
其他好文 时间:
2015-08-13 21:50:37
阅读次数:
180
题目链接题意: 若一年有n天, 问至少需要多少个人才能满足其中两个人生日相同的概率大于等于0.5?思路: 经典问题:生日悖论 换成其互斥事件:m个人, 每个人生日都不相同的概率 ≤ 0.5 时最小人数。 这就是邮票收集问题的变形:每个邮票至少出现一次的概率 小于等于 0.5 等价于: ...
分类:
其他好文 时间:
2015-08-12 23:17:14
阅读次数:
131
实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离。具体如下:1、向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ni_frmMain,Timer timer1, ContentMenuStrip cms_noti.....
常见的操作系统教科书中,会使用互斥锁来实现读者线程和写者线程的同步问题,但是在JDK5推出线程安全队列之后,将该问题变得异常简单。 java.util.concurrent.ConcurrentLinkedQueue 是线程安全的非阻塞队列,其实...
分类:
编程语言 时间:
2015-08-11 23:50:10
阅读次数:
428
代码:#import "ViewController.h"extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));@interface ViewController ()// 原子属性 - 互斥锁实现@propert...
分类:
其他好文 时间:
2015-08-11 13:48:08
阅读次数:
190