信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语.有三种类型:Posix有名信号量,使用Posix IPC名字标识.Posix基于内存的信号量,存放在共享内存区中:System V信号量.在内核中维护. 这三种信号量都可用于进程间或线程间的同步. 图1 由两个进程使用的一个二值信号量 图2 由两个进程使用的一个Posix有名二值信号量 图3 由一个进程内的两个线程共享的基于内存的信号量 一个进程可以在某个信号量上运行的三种操作: 1.创建一个信号量,这要求调用者指定初始值,…
相互排斥锁用于上锁,条件变量则用于等待.条件变量是类型为pthread_cond_t的变量.一般使用例如以下函数: #include <pthread.h> int pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr); int pthread_cond_signal(pthread_cond_t *cptr); 每一个条件变量总是有一个相互排斥锁与之关联.调用pthread_cond_wait等待某个条件为真时,还会指定…
概述 相互排斥锁把试图进入我们称之为临界区的全部其它线程都堵塞住.该临界区通常涉及对由这些线程共享一个或多个数据的訪问或更新.读写锁在获取读写锁用于读某个数据和获取读写锁用于写直接作差别. 读写锁的分配规则例如以下: 1.仅仅要没有线程持有某个给定的读写锁用于写.那么随意数目的线程能够持有该读写锁用于读. 2.仅当没有线程持有某个给定的读写锁用于读或用于写时,才干分配该读写锁用于写. 即仅仅要没有线程在改动某个给定的数据,那么随意数目的线程都能够拥有该数据的读訪问权.仅当没有其它线程在读或改动某…
Linux环境编程相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了.趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象. 因为不是写书,也受到许多外部因素限制,可能介绍不会很系统和详细,不过大都是一些基础知识,对于新手入门应该还是有点帮助的(因为我也相当于重学嘛^_^),感兴趣的朋友可以看一下: 相关文章如下(持续更新中): Linux编程简介——VI Linux编程简介——gcc Linux编程简介——静态链接库 Linux编程简介——动态链接库 Li…
http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/ 一.信号灯概述 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制.相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志.除了用于访问控制外,还可用于进程同步.信号灯有以下两种类型: 二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁. 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同.信号灯强调共…
信号量 一.什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有. 信号量的值为正的时候,说明它空闲.所测试的线程可以锁定而使用它.若为0,说明 它被占用,测试的线程要进入睡眠队列中,等待被唤醒. 二.信号量的分类 在学习信号量之前,我们必须先知道--Linux提供两种信号量: (1) 内核信号量,由内核控制路径使用 (2) 用户态进程使用的信号量,这种信号量又分为POSIX信号量和SYSTEMV信号量. POSIX信号量又分为有名信号量和无名信号量.…
同步概念 同步,指对在一个系统中所发生的事件之间进行协调,在时间上出现一致性与统一化的现象. 但是,对于不同行业,对于同步的理解略有不同.比如:设备同步,是指在两个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容保持一致,或者按需要部分保持一致:文件同步,是指让两个或多个文件夹里的文件保持一致,等等. 但是,在软件编程或者通信行业中所说的同步与生活中大家印象中的同步概念略有差异."同"字应是指协同.协助.互相配合.主旨在协同步调,按预定的先后次序运行.注意,这里是…
背景 在Unix环境编程中,系统提供了很多以at结尾的函数,如openat.fstatat等,而这类函数通常有一个特点,就是形参列表中多了int dirfd 例如: int open(const char *pathname, int flags, mode_t mode); int openat(int dirfd, const char *pathname, int flags, mode_t mode); int mkfifo(const char *pathname, mode_t mo…
就像线程具有属性一样,线程的同步对象(如互斥量.读写锁.条件变量.自旋锁和屏障)也有属性 1.互斥量属性 用pthread_mutexattr_init初始化pthread_mutexattr_t结构,用pthread_mutexattr_destroy来对该结构进行回收. #include <pthread.h> int pthread_mutexattr_init( pthread_mutexattr_t *attr ); int pthread_mutexattr_destroy( pt…
同步概念 所谓同步,即同时起步,协调一致.不同的对象,对“同步”的理解方式略有不同. 如,设备同步,是指在两个设备之间规定一个共同的时间参考: 数据库同步,是指让两个或多个数据库内容保持一致,或者按需要部分保持一致: 文件同步,是指让两个或多个文件夹里的文件保持一致.等等 而,编程中.通信中所说的同步与生活中大家印象中的同步概念略有差异.“同”字应是指协同.协助.互相配合.主旨在协同步调,按预定的先后次序运行. 线程同步 同步即协同步调,按预定的先后次序运行. 线程同步,指一个线程发出某一功能调…