读书人

IPC信号量(se地图hore)

发布时间: 2013-10-27 15:21:50 作者: rapoo

IPC——信号量(semaphore)

a) 作用:保护临界资源,控制进程。访问临界资源时,先查看信号量,若信号量为1表示资源有空,那么才可以访问临界资源。同时把信号量-1; 1. 实质:是一个整数,初始值为1; 2. 二值信 ...
a) 作用:保护临界资源,控制进程。访问临界资源时,先查看信号量,若信号量为1表示资源有空,那么才可以访问临界资源。同时把信号量-1;

1. 实质:是一个整数,初始值为1;

2. 二值信号灯:值只能取0或1;最多允许一个进程访问。

3. 计数信号灯:值可以取任意的非负值,即可以允许多个进程访问

b) 打开信号量:int semget(key_t key, int nsems, int senflg)

1. #include<sys/types.h>, #include<sys/ipc.h>,#include<sys/sem.h>

2. Key:键值,由ftok获得

3. Nsems:创建或打开 信号灯集 中将包含信号灯的数目

4. Semflg:标志,同消息队列

c) 操作:int semop(int semid, struct sembuf *sops, unsigned nsops)

1. 功能:对信号量进行控制

2. Semid:信号量集的ID

3. Sops:操作数组,表明要进行什么操作

a) Struct sembuf

{unsigned short sem_num; :表示第几个信号量

Short sem_op; :1表示释放,-1表示获取

Short sem_flg:} :标志

1. IPC_NOWAIT:

2. IPC_UNDO:程序结束时释放信号量。避免资源永远被锁定

4. Nsops:sops所指向的数组的元素的个数

读书人网 >编程

热点推荐