LINUX学习笔记16——进程间通信5信号量

本文深入解析了信号量机制的作用、特点及其API实现,包括信号量的打开与操作方法,旨在帮助开发者理解和掌握如何使用信号量来保护临界资源,控制进程访问。重点介绍了信号量的类型、打开信号量的函数、操作信号量的方法以及关键参数的含义,为解决多进程环境下资源冲突提供有效策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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所指向的数组的元素的个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值