一个信号量操作的例子

devtools/2024/10/15 20:22:48/

代码:

#include<stdio.h>
#include<sys/sem.h>
#include<sys/ipc.h>
#include<errno.h>
#include<string.h>
typedef int sem_t;
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
}arg;sem_t CreateSem(key_t key,int value)
{union semun sem;sem_t semid;sem.val=value;semid=semget(key,1,IPC_CREAT | 0777);
//	perror("error");if(-1==semid){
//	perror("error");printf("create semaphore error\n");return -1;}semctl(semid,0,SETVAL,sem);return	semid;
}
int Sem_P(sem_t semid)
{struct sembuf sops={0,+1,IPC_NOWAIT};return (semop(semid,&sops,1));
}
int Sem_V(sem_t semid)
{struct sembuf sops={0,-1,IPC_NOWAIT};return (semop(semid,&sops,1));
}
int GetvalueSem(sem_t semid)
{union semun sem;return semctl(semid,0,GETVAL,sem);
}
void DestroySem(sem_t semid)
{union semun sem;sem.val=0;semctl(semid,0,IPC_RMID,sem);
}
int main(void)
{key_t key;int semid;char i;struct semid_ds buf;int value =0;key=ftok("ipc/sem/",'a');printf("key = %d",key);semid=CreateSem(key,100);for(i=0;i<=3;i++){Sem_P(semid);Sem_V(semid);}value=GetvalueSem(semid);printf("sem value is:%d\n",value);DestroySem(semid);return 0;}

运行:


http://www.ppmy.cn/devtools/121336.html

相关文章

[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

引言 解码器Transformer的规模不断壮大&#xff0c;轻松达到千亿级参数。同时由于该规模&#xff0c;基于提示或微调在各种NLP任务上达到SOTA结果。但目前为止解码器Transformer还无法应用在语义搜索或语句嵌入上。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比…

C语言高阶【1】--动态内存管理【1】(可以灵活的申请和使用内存,它不香吗?)

本章概述 为什么要有动态内存分配&#xff1f;malloc函数和free函数calloc函数和realloc函数常见的动态内存的错误彩蛋时刻&#xff01;&#xff01;&#xff01; 为什么要有动态内存分配&#xff1f; 情况描述&#xff1a;当我们创建一个变量时&#xff0c;比如&#xff0c;i…

基于多维统计分析与GMM聚类的食品营养特征研究

1.项目背景 在当今社会&#xff0c;随着人们对健康和营养的日益关注&#xff0c;深入了解食品的营养成分及其对人体的影响变得越来越重要&#xff0c;本研究采用了多维度的分析方法&#xff0c;包括营养成分比较分析、统计检验、营养密度分析和高斯混合模型&#xff08;GMM&am…

Debian 配置 Python 开发与运行环境

配置 Python 开发与运行环境。 1.3.1. Debian下的安装与配置 Debian 是一个致力于自由软件开发并宣扬自由软件基金会理念的自愿者组织。 Debian 计划创建于 1993 年。当时&#xff0c;Ian Murdock 发出一份公开信&#xff0c; 邀请软件开发者们参与构建一个基于较新的 Linux …

(9)MATLAB瑞利衰落信道仿真2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、瑞利衰落信道二、瑞利衰落信道建模三、仿真结果二、高斯随机变量和瑞利随机变量后续 前言 本文首先给出瑞利衰落信道模型&#xff0c;并根据瑞利衰落变量估…

安装配置pytorch(cuda、、cudnn、torch、torchvision对应版本)

参考&#xff1a; Pytorch环境配置——cuda、、cudnn、torch、torchvision对应版本&#xff08;最全&#xff09;及安装方法_cuda12.2对应的pytorch版本-CSDN博客 https://download.pytorch.org/whl/torch_stable.html Previous PyTorch Versions | PyTorch

关于 JVM 个人 NOTE

目录 1、JVM 的体系结构 2、双亲委派机制 3、堆内存调优 4、关于GC垃圾回收机制 4.1 GC中的复制算法 4.2 GC中的标记清除算法 1、JVM 的体系结构 "堆"中存在垃圾而"栈"中不存在垃圾的原因: 堆(Heap) 用途:堆主要用于存储对象实例和数组。在Java中…

封装提示词翻译组件

一、本章诉求 由于前期设计的提示词均是英文输入&#xff0c;后期用户要求增加中文提示词输入&#xff0c;这个需求更改有两个方法&#xff0c;一个是修改comfyui工作流&#xff0c;另一个是修改前端&#xff0c;在前端将用户输入的中文翻译成英文&#xff0c;再推送到工作流中…