当前位置: 首页 > news >正文

linux高级学习13

24.9.10学习目录

  • 一.信号量
    • 1.信号量的API

一.信号量

信号量本质上是一个非负整数计数器,用于控制对公共资源的访问
当信号量大于0时可以进行访问,否则阻塞
PV原语是对信号量的操作,一次P操作使信号量减一,一次V操作使信号量加一

(1)信号量用于互斥
多个线程共用一个信号量完成互斥
即是将信号量初始化为1,每个线程对信号量先进行P操作,然后对共享区域进行操作,最后对信号量进行V操作

(2)信号量用于同步
每个线程拥有一个信号量完成同步,先执行的任务信号量为1,其他为0
每个线程首先对自己的信号量进行P操作,然后对共享区域进行操作,最后对下一个线程的信号量进行V操作

1.信号量的API

(1)初始化信号量

#include <semaphore.h>
int sem_init(sem_t *sem,int pshared,unsigned int value);

sem:信号量的地址
pshared:等于0,信号量在线程间共享;不等于0,信号量在进程间共享
value:信号量的初始值

(2)信号量减一

int sem_wait(sem_t *sem);//当信号量为0时不阻塞线程
int sem_trywait(sem_t *sem);

(3)信号量加一

int sem_post(sem_t *sem);

(4)销毁信号量

int sem_destroy(sem_t *sem);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 后端面试经典问题汇总
  • python列表判断是否为空的三种方式
  • Linux: network: esp:收到了重复的包?
  • Python基础语法(1)下
  • Modbus-RTU之C语言实现
  • 智慧水务建设的核心内容
  • 异步编程的实现方式
  • 全国计算机二级考试C语言篇3——选择题
  • GO 闭包
  • gi清除无用缓存
  • WPF 依赖属性与附加属性(面试长问)
  • 使用Linq进行多表查询(C#)
  • verilog vscode 与AI 插件
  • C#使用TCP-S7协议读写西门子PLC(四)
  • FlinkCDC 3.2.0 新增优点 Pattern Replacement in routing rules
  • ECS应用管理最佳实践
  • JS 面试题总结
  • JS题目及答案整理
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • node 版本过低
  • PHP CLI应用的调试原理
  • Redis字符串类型内部编码剖析
  • scrapy学习之路4(itemloder的使用)
  • Spring Boot MyBatis配置多种数据库
  • V4L2视频输入框架概述
  • vue.js框架原理浅析
  • 阿里云购买磁盘后挂载
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 警报:线上事故之CountDownLatch的威力
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 网页视频流m3u8/ts视频下载
  • 新手搭建网站的主要流程
  • - 转 Ext2.0 form使用实例
  • Java数据解析之JSON
  • postgresql行列转换函数
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 积累各种好的链接
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #大学#套接字
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (C++哈希表01)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)PySpark3:SparkSQL编程
  • (全注解开发)学习Spring-MVC的第三天
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)JAVA中的堆栈
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ***详解账号泄露:全球约1亿用户已泄露
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据