嵌入式学习记录——信号量

信号量的基本内容:

                 信号量是一种资源,可以被初始化、申请、释放、销毁

    P操作:申请资源
    V操作:释放资源

1.无名信号量:

1.sem_init  

int sem_init(sem_t *sem, int pshared, unsigned int value);

功能:
      初始化信号量

参数:
      sem:信号量空间首地址

      pshared:
        0 一个进程中的所有线程间共享
        非0 进程间共享 

      value:
        初始化的值

返回值:
      成功返回0 
      失败返回-1

 2.sem_destroy:

 int sem_destroy(sem_t *sem);

功能:
      信号量的销毁

参数:
      sem:信号量空间首地址

返回值:
      成功返回0 
      失败返回-1 

3. sem_wait:

 int sem_wait(sem_t *sem);

功能:
      申请信号量

4.sem_post:

    int sem_post(sem_t *sem);

功能:
      释放信号量

2.有名信号量:

 1.创建   semget 

 int semget(key_t key, int nsems, int semflg);

功能:
            创建一组信号量
参数:
            key:IPC对象名
            nsems:信号量的个数
            semflg:IPC_CREAT 
返回值:
            成功返回信号量ID
            失败返回-1 

   2.销毁  semctl

    int semctl(int semid, int semnum, int cmd, ...);

功能:   
            向信号灯发送命令
参数:
            semid:    信号灯ID号
            semnum:具体操作信号量的编号
            cmd:
                IPC_RMID    删除信号灯
                SETVAL      设置信号量的值

返回值:
            成功返回0
            失败返回-1 

 初始化:                                                                   【要在全局区定义】
        union semun {
            int              val;                          /* Value for SETVAL */
            struct semid_ds *buf;               /* Buffer for IPC_STAT, IPC_SET */
            unsigned short  *array;            /* Array for GETALL, SETALL */
            struct seminfo  *__buf;            /* Buffer for IPC_INFO(Linux-specific) */
        };

3.申请信号量 / 释放信号量   semop 

int semop(int semid, struct sembuf *sops, size_t nsops);

功能:
            对信号量完成操作
参数:
            semid:信号灯的ID号
            sops:信号量操作的数组首地址
            nsops:数组元素个数
返回值:
            成功返回0 
            失败返回-1 

    unsigned short sem_num;                  /* semaphore number */        操作信号量的下标
         short          sem_op;                      /* semaphore operation */     具体对信号量的操作(申请:-1  释放:+1)
         short          sem_flg;                      /* operation flags */         SEM_UNDO

        

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ string类详解及模拟实现

目录 【本节目标】 1. 为什么学习string类? 1.1 C语言中的字符串 1.2 面试题(暂不做讲解) 2. 标准库中的string类 2.1 string类(了解) 2.2 string类的常用接口说明(注意下面我只讲解最常用的接口) 3. string类的模拟实现 3.1string类常用…

SpringCloud知多少

引言: Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集 成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用 程序。 如何定义微服务&#x…

Express学习(一)

Express Express简介 什么是Express 官方给出的概念:Express是基于Node.js平台,快速、开放、极简的web开发框架。 通俗的理解:Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。进一步理解Express 不使用E…

【软件使用】Markdown编辑器第一次使用介绍

【软件使用】Markdown编辑器第一次使用介绍 markdown格式支持的软件有:VS Code 和 Typora,CSDN写网页博文也是用的.md,CSDN能支持导入的文件也是以.md格式结尾的文件名。 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markd…

C语言——结构体(位段)、联合体、枚举

hello,大家好!我是柚子,今天给大家分享的内容是C语言中的自定义类型结构体、联合体以及枚举,有什么疑问或建议可以在评论区留言,会顺评论区回访哦~ 一、结构体 struct a.结构体声明 不同于数组的是,结构…

【CSP试题回顾】202212-2-训练计划

CSP-202212-2-训练计划 解题思路 输入和初始化: 首先,代码从输入中获取项目的截止日期和项目数量。然后,它初始化一个项目列表,每个项目都有其依赖项、被依赖的项目集合、完成时间、总完成时间(包括依赖链&#xff09…

【JavaSE】面向对象——多态性

多态性 多态性的概念 所谓多态性,理解为一个事物的多种形态。具体点就是去完成某个动作时,不同的对象会产生不同的状态。 多态性的好处 多态在Java中指的是父类的引用指向子类的对象,或者可以说是子类的对象赋给父类的引用。这样在我们的…

SpringBoot实现分页模糊查询

1. Navicat查询数据 Navicat中查询所有数据 SELECT * FROM sys_user;Navicat中查询前两条数据(俩种方式) SELECT * FROM sys_user LIMIT 2; //从0开始,第一个参数是起始位置即(pageNum-1)*pageSize,第二个参数是步长 SELECT * …

项目部署后 通过公网IP访问不到的问题解决

目录 1.检查项目是否在运行(第二行命令) 2.检查所用服务器防火墙是否打开 3.检查linux系统防火墙有没有打开 问题如图: 首先确保项目已经成功部署 1.检查项目是否在运行(第二行命令) 第一行命令是监听58080端口,我的项目是使用该端口 2.检查所用云服务器防火墙是否打开 我…

分享77个Html杂七杂八模板,总有一款适合您

分享77个Html杂七杂八模板,总有一款适合您 77个Html杂七杂八模板下载链接:https://pan.baidu.com/s/1-RyIKaxdCu3dbnlMFMwviw?pwd8888 提取码:8888 学习知识费力气,收集整理更不易。知识付费甚欢喜,为咱码农谋福…

L75-25(Leetcode394字符串解码)

代码&#xff1a; 两个栈 一个存数字 一个存字符串 class Solution {public String decodeString(String s) {Deque<String> stack2 new LinkedList<>();Deque<Integer> stack1 new LinkedList<>();int n s.length();StringBuffer res new Strin…

2024年3月管理体系认证基础考试问答题及答案

管理体系认证基础 1.管理体系认证的主要过程有哪些? &#xff08;1&#xff09;认证前的活动&#xff0c;主要是与认证申请方沟通&#xff0c;对认证事宜理解一致。 &#xff08;2&#xff09;初次认证策划&#xff0c;或者称为初次审核策划&#xff0c;包括在已获得认证的…

每日好题3.5

前缀和 这个题目巨妙&#xff0c;打的时候没写出来&#xff0c;后面补题发现太牛了 思路&#xff1a;当前区间左端点 L L L &#xff0c;当我们向右移动一次&#xff0c;就相当于&#xff0c;原式 - f ( L ) f ( L 1 e 18 ) f(L) f(L 1e18) f(L)f(L1e18)&#xff0c;值就…

linuxOPS基础_服务器构成

服务器的重要结构组成 家用电脑组成&#xff1a; CPU、主板、内存条、显卡、硬盘、电源、风扇、网卡、显示器、机箱、键盘鼠标等等。 CPU CPU是电脑的大脑&#xff0c; CPU发展史&#xff1a; 32 位CPU&#xff1a;最大的内存寻址地址2^32&#xff0c;大约4G的大小。 CP…

H5:列表

目录 一、前言 二、正文 1.无序列表 2.有序列表 3.自定义列表 三、结语 一、前言 在开发场景中&#xff0c;列表的使用十分常见&#xff0c;我们开始介绍关于列表的标签使用 二、正文 列表是用来表示数据&#xff0c;则用于布局。 列表的最大的特点就是整齐、整洁、有序&a…

Mysql整理-索引

MySQL中的索引是一种数据库对象,可以提高数据检索的速度,类似于书籍的目录。它们是对数据库表中一列或多列的值进行排序的数据结构,可以让数据库查询引擎快速找到所需的行。索引对于提高数据库查询的性能至关重要,特别是在处理大量数据时。 索引类型以及其特点 以下是MySQL…

CSS3新特性

简介 继CSS2之后&#xff0c;CSS3增加了很多新的特性&#xff0c;虽然W3C仍在规范中&#xff0c;但是很多新的CSS3属性已经在很多现代浏览器中得到了支持。 CSS3边框 在CSS3中&#xff0c;可以创建圆角边框&#xff0c;添加边框阴影&#xff0c;设置边框图片&#xff0c;利用…

计算机组成原理之机器:计算机系统的基本概念

计算机组成原理之机器 笔记来源&#xff1a;哈尔滨工业大学计算机组成原理&#xff08;哈工大刘宏伟&#xff09; Chapter1&#xff1a;计算机系统的基本概念 1.1 计算机系统简介 从物理构成的角度对计算机系统分层 计算机组成原理主要关注微体系结构&#xff08;Mirco-arc…

【无标题】计算机主要应用于哪些领域

科学计算&#xff08;或称为数值计算&#xff09;、数据处理&#xff08;信息管理&#xff09;、辅助工程、生产自动化、人工智能。1、科学计算&#xff08;或称为数值计算&#xff09;&#xff1a;早期的计算机主要用于科学计算。目前&#xff0c;科学计算仍然是计算机应用的一…