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

南通网站制作公司哪家好今日头条新闻大事件

南通网站制作公司哪家好,今日头条新闻大事件,企业所得税怎么算公式,做网站会用到的色彩代码单词一、信号灯集 1.1 信号灯集的概念 信号灯集是进程间同步的一种方式。 信号灯集创建后,在信号灯集内部会有很多个信号灯。 每个信号灯都可以理解为是一个信号量。 信号灯的编号是从0开始的。 比如A进程监视0号灯,B进程监视1号灯。 0号灯有资源&…

一、信号灯集

1.1 信号灯集的概念

信号灯集是进程间同步的一种方式。

信号灯集创建后,在信号灯集内部会有很多个信号灯。

每个信号灯都可以理解为是一个信号量。

信号灯的编号是从0开始的。

比如A进程监视0号灯,B进程监视1号灯。

0号灯有资源,相应的A进程就可以去执行共享内存的写操作。

1号灯有资源,相应的B进程就可以去执行共享内存的读操作。

1.2 信号灯集的API接口分析

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h> -- 所需头文件
int semget(key_t key,int nsems,int semflg);
功能:获取/创建信号灯集
参数:key:通过ftok获取的键值nsems:信号灯集中信号灯的数量semflg:IPC_CREAT|0666    创建信号灯集IPC_CREAT|IPC_EXCL|0666    创建信号灯集,信号灯已经存在,会返回错误0:如果信号灯集已经存在,那么直接获取信号灯集
返回值:成功返回信号灯集的id,失败返回-1,置位错误码#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semctl(int semid,int semnum,int cmd, ...);
功能:控制信号灯集的属性
参数:semid:信号灯的标号semnum:第几个灯cmd:IPC_STAT:获取信号灯集的属性 --- 需要使用第四个参数,不关注第二个参数IPC_SET:设置信号灯集的属性 --- 需要使用到第四个参数,忽略第二个参数IPC_RMID:删除信号灯集 --- 不需要第四个参数,忽略第二个参数SETVAL:设置信号灯的数值 --- 需要第四个参数GETVAL:获取信号灯的数值,以返回值的形式返回,不需要使用第四个参数... ...union semun{int val;struct semid_ds *buf;};
返回值 :GETVAL : 成功返回信号灯的数值其他的cmd :成功返回0失败返回-1,置位错误码
ge1:设置/获取信号灯集的属性union semun sems;struct semid_ds buf;sems.buf = &buf;semctl(semid,0,IPC_STAT,sems);//获取buf:修改buf中你需要设置的数值semctl(semid,0,IPC_SET,sems);//设置
eg2:获取某个信号灯的数值int val = semctl(semid,1,GETVAL); //获取1号灯的数值
eg3:设置某个信号灯的数值union semun sems;sems.val = 1;semctl(semid,1,SETVAL,sems); //将第一个信号灯的数值设置为1
eg4:删除信号灯semctl(semif,0,IPC_RMID);#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semop(int semid,struct sembuf *sops,size_t nsops);
功能:对某些信号灯做操作
参数:semid : 信号灯的编号sops : 对信号灯的操作struct sembuf{unsigned short sem_num; //信号灯的编写short sem_op; //对信号灯的操作-1: 申请资源1: 释放资源short sem_flg; //操作模式0: 阻塞IPC_NOWAIT : 非阻塞};
nsops:要操作的信号灯的数量如果想要操作多个灯,需要定义一个结构体数组,将数组首地址传入第二个参数
返回值:成功返回0,失败返回-1,置位错误码

read.c 

read.c#include <my_head.h>
#define SHM_SIZE 4096
union semun{int val;struct semid_ds *buf;    };
//设置信号灯集中信号灯的初始值
void sems_init(int semid,int witch,int val){union semun sem = {.val = val,};semctl(semid,witch,SETVAL,sem);
}
//获取资源,V操作
void V(int semid,int witch){struct sembuf buf = {.sem_num = witch,.sem_op = -1,sem_flg = 0,};semop(semid,&buf,1);
}
//释放资源,P操作
void P(int semid,int witch){struct sembuf buf = {.sem_num = witch,.sem_op = 1,.sem_flg = 0,};semop(semid,&buf,1);
}
int main(int argc,const char *argv[]){//获取键值key_t key = ftok("/home/linux",'a');if(-1 == key){PRINT_ERR("ftok error");}//创建/获取信号灯集int semid = semget(key,2,IPC_CREAT|0666);
if(-1 == semid)PRINT_ERR("semget error");sems_init(semid,0,1); //第0个灯的初始值为1sems_init(semid,1,0); //第一个灯的初始值为0//获取/创建共享内存int shmid = shmget(key,SHM_SIZE,IOC_CREAT|0666);if(-1 == shmid)PRINT_ERR("shmget error");//映射共享内存到用户空间,以读写的方式映射出来char *rbuf = NULL;rbuf = shmat(shmid,NULL,0);char buf[128] = {0};while(1){V(semid,1); //对1号灯V操作printf("rbuf = %s\n",rbuf);P(semid,0);} return 0;
}

write.c

#include <my_head.h>
#define SHM_SIZE 4096
union semnu{int val;struct semid_ds *buf;};
//设置信号灯集中信号灯的初始值
void sems_init(int semid,int witch,int val){union semun sem = {.val = val,};semctl(semid,witch,SETVAL,sem);
}
//获取资源,V操作
void V(int semid,int witch){struct sembuf buf = {.sem_num = witch,.sem_op = -1,.sem_flg = 0,};semop(semid,&buf,1);
};
//释放资源,P操作
void P(int semid,int witch){struct sembuf buf = {.sem_num = witch,.sem_op = 1,.sem_flg = 0,};semop(semid,&buf,11);
}int main(int argc,const char *argv[]){//获取键值key_t key = ftok("home/linux",'a');if(-1 == key){PRINT_ERR("ftok error");}//获取/创建共享内存int shmid = shmget(key,SHM_SIZE,IPC_CREAT|0666);if(-1 == shmid){PRINT_ERR("shmget error");}//创建/获取信号灯集int semid = semget(key,2,IPC_CREAT|0666);if(-1 == semid){PRINT_ERR("semget error");//映射共享内存到用户空间,以读写的方式映射出来char *Wbuf = NULL;wbuf = shmat(shmid,NULL,0);char buf[128] = {0};while(1){V(semid,0);fgets(buf,sizeof(buf),stdin);buf[strlen(buf) - 1] = '\0';//向共享内存写入内容strcpy(wbuf,buf);p(semid,1);}}
return 0;
}

http://www.dinnco.com/news/17552.html

相关文章:

  • 实体行业做分销网站有什么好处四种营销策略
  • wordpress整站密码天津搜索引擎优化
  • 同时做网站建设和代账优化关键词排名seo软件
  • 专业网站策划公司b站推广网站2024mmm
  • 酒店专业培训网站建设网络营销常用的方法有哪些
  • 最优的郑州网站建设2022知名品牌营销案例100例
  • 如何给网站续费百度统计怎么使用
  • wordpress去除版本号宁波seo关键词优化教程
  • 用表格做的网站怎么做电商
  • 海南爱心扶贫网站是哪个公司做的数据分析师证书
  • 有个可以做图片的网站关键词优化好
  • java 快速建站seo博客写作
  • 网站有源代码如何做seo男生最喜欢的浏览器推荐
  • 微信支付 网站建设精准推广引流5000客源
  • 德国ba保镖商城网站哪个公司做的上海最新发布
  • 沃尔玛网上商城中国安卓系统优化软件
  • 跨境电商平台开发seo技巧优化
  • 小语种服务网站上海排名优化推广工具
  • 郑州网站建设及优化注册网站在哪里注册
  • 网站架构的优化深圳新闻今日最新
  • 网页设计班级网站用什么做首页正规手游代理平台有哪些
  • 免费做网站表白推销产品怎么推广
  • 网站建设需求调研方法深圳网站seo哪家快
  • 做销售除了网站展会还有其他方法每日重大军事新闻
  • wdcp 防盗链 网站不能打开郑州seo哪家好
  • 北京抖音代运营公司天津seo托管
  • 网站专题页怎么做seo是哪里
  • 类似谷德设计网的网站外贸建站平台
  • 伴游网站开发资源网站排名优化seo
  • 网站制作报价明细免费发布广告信息网