当前位置: 首页 > 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);

http://www.mrgr.cn/news/24722.html

相关文章:

  • 【CVPR2024】Scaling Up Video Summarization Pretraining with Large Language Models
  • 超详细,手把手带你源码启动 Thingsboard-Gateway + MQTT 接入设备
  • Redisson分布式锁实现及原理详解
  • Maven下载安装
  • 某仿soul欲音社交系统存在任意文件读取漏洞
  • PyTorch 和 TensorFlow
  • 软件测试认知篇
  • 实战02-TabBar
  • redis数据类型
  • table用position: sticky固定多层表头,滑动滚动条border边框透明解决方法
  • 横版闯关手游【全明星时空阿拉德】Linux手工服务端+运营后台+双app端
  • R语言数据整理和分析(1)
  • ARM base instruction -- blr
  • golang的GC(三色标记法+混合写屏障)学习笔记
  • 【PyTorch单点知识】torch.nn.Embedding模块介绍:理解词向量与实现
  • 438. 找到字符串中所有字母异位词
  • crdownload格式后缀的文件是什么东西?crdownload格式是什么
  • 秋招面经9.11
  • 智能优化算法-鼠群优化算法(RSO)(附源码)
  • Vue3: Node安装下载