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

Linux学习——信号量

1.头文件-semaphore.h

2.信号量类型

sem_t sem;
加强版的互斥锁,是并行的

3.主要函数

初始化信号量
        sem_init(sem_t *sem,int pshared,unsigned int value);
 第一个参数       信号量类型

  第二个参数

                        0-线程同步
                        1-进程同步
        value-最多有几个线程操作共享数据


销毁信号量
sem_destroy(sem_t *sem);


加锁
        sem_wait(sem_t *sem);
                调用一次相当于对sem做了一次 --(减减) 操作
                如果sem值为0,线程会阻塞


尝试加锁
        sem_trywait(sem_t *sem);
        sem == 0;加锁失败,不阻塞,直接返回


限时尝试加锁
        sem_timewait(sem_t *sem,xxxx);

         xxx是限时多少秒


解锁++
        sem_post(sem_t *sem);
                对sem做了++ 操作

4.练习

使用信号量实现生产者,消费者模型。
 

http://www.dtcms.com/a/143911.html

相关文章:

  • 编程技能:调试04,逐语句命令
  • JavaScript数据类型简介
  • [Java]反射、String类补充
  • SICAR程序标准功能块 FB1512 “Robot_kuka_FB“
  • 02、Yarn的安装理念及如何破解依赖管理困境
  • Photoshop安装与配置--简单攻略版
  • 【教程】DVWA靶场渗透
  • 【无标题】微信开发者工具编译运行没问题,真机调试报错:Component is not found in path “wx://not-found“.
  • JavaScript 中的同步与异步:从单线程到事件循环
  • 睡前小故事数据集分享
  • 企业微信自建应用开发回调事件实现方案
  • javaNIO详解
  • cv::dnn::NMSBoxes和nms-free的比较
  • 测风塔布局算法详解:基于宏观分区与微观定量选址的双阶段优化方法
  • Java数据结构——ArrayList
  • Spring 依赖冲突解决方案详解
  • SAP系统工艺路线的分配物料出现旧版包材
  • 从 0~1 保姆级 详细版 PostgreSQL 数据库安装教程
  • 理解Java一些基础(八股)
  • 红帽RHEL与国产Linux系统对比:技术、生态与自主可控的博弈
  • 如何系统地入门学习stm32?
  • 【大模型】 LangChain框架 -LangChain实现问答系统
  • [C++] 高精度加法(作用 + 模板 + 例题)
  • CSS继承
  • 游戏引擎学习第235天:在 Windows 上初始化 OpenGL
  • stm32| 中断标志位和中断挂起位 | TIM_ClearFlag 函数和TIM_ClearITPendingBit 函数
  • 云服务器性价比测评:Intel vs AMD vs Graviton
  • 绕过UI的cooke和token的验证
  • `pred_by_img.setdefault(img, [ ]).append({...})`
  • @EnableAsync+@Async源码学习笔记之五