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

中山网站推广词站长平台

中山网站推广词,站长平台,软件开发和前端开发的区别,免费的cms视频网站模板一&#xff0c;用信号量来实现是父进程先进行&#xff0c;还是子进程先进性 信号量的没有P&#xff0c;V操作之前&#xff0c;我们不知道如何控制&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>…

一,用信号量来实现是父进程先进行,还是子进程先进性

信号量的没有P,V操作之前,我们不知道如何控制:

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <unistd.h>//pid_t fork(void);
//int semget(key_t key, int nsems, int semflg);union semun
{int val;                //仅用于SETVAL操作类型,设置某个信号量的值等于valstruct semid_ds *buf;   //用于IPC_STAT和IPC_SET操作,存取semid_ds结构unsigned short *array;  //用于SETALL和GETALL操作struct seminfo *__buf;  //为控制IPC_INFO提供的缓存
};int main()
{key_t key;int semid;key = ftok(".",2);semid = semget(key, 1, IPC_CREAT|0666);union semun initsem;initsem.val = 1;semctl(semid, 0, SETVAL, initsem);int pid = fork();if(pid >0){//get lockprintf("this is father\n");//return lock;}else if(pid == 0){printf("this is child\n");}else{printf("fork error\n");}return 0;
}

有P,V操作:

一开始 val 表示信号量的钥匙为0,fork操作后,先运行父进程,pGetkey(semid); 拿钥匙发现val 为0 卡住,挂起,进而运行子进程,vPutBackKey(semid) ;操作放入钥匙然后再运行父进程。

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <unistd.h>//pid_t fork(void);
//int semget(key_t key, int nsems, int semflg);
//int semop(int semid, struct sembuf *sops, size_t nsops);
//int semctl(int semid, int semnum, int cmd, ...);union semun
{int val;                //仅用于SETVAL操作类型,设置某个信号量的值等于valstruct semid_ds *buf;   //用于IPC_STAT和IPC_SET操作,存取semid_ds结构unsigned short *array;  //用于SETALL和GETALL操作struct seminfo *__buf;  //为控制IPC_INFO提供的缓存
};void pGetKey(int id)
{struct sembuf set;set.sem_num = 0;set.sem_op = -1;set.sem_flg = SEM_UNDO;semop(id,&set, 1);printf("getKey\n");
}void vPutBackKey(int id)
{struct sembuf set;set.sem_num = 0;set.sem_op = 1;set.sem_flg = SEM_UNDO;semop(id,&set, 1);printf("put back the key\n");}int main(int argc, char const *argv[])
{key_t key;          // 创建id号int semid;          //信号量key = ftok(".",2);semid = semget(key, 1, IPC_CREAT|0666);union semun initsem;initsem.val = 0;          //信号量的状态标记为0//初始化信号量semctl(semid, 0, SETVAL, initsem);   //信号量  操作第0个信号量  //SETVAL 设置信号量的值 设置为 initsemint pid = fork();              //创建子进程if(pid >0){                    //父进程pGetKey(semid);        //get lockprintf("this is father\n");vPutBackKey(semid);    //return lock;}else if(pid == 0){printf("this is child\n");vPutBackKey(semid);}else{printf("fork error\n");}return 0;
}

http://www.yidumall.com/news/71336.html

相关文章:

  • jsp网站开发论文2017我想注册一个网站怎么注册
  • wordpress 页脚广告苏州seo网站管理
  • 网站建设与研发谷歌应用商店app下载
  • 手机上什么网站兰州seo优化公司
  • 彩视音乐相册制作下载安装无锡百度seo优化
  • 免费网站b2b新泰网站seo
  • 濮阳网站公司seo软件下载
  • 如何制作一个自己的网站?我国的网络营销公司
  • 京伦科技网站做的怎么样商丘网站推广公司
  • 中国空间站最新视频有哪些网络营销公司
  • 网站建设广州网站建设站长工具查询入口
  • 哪家公司搭建网站seo诊断
  • vps 做网站中国广告公司前十强
  • 站点建立网站的方法成都十大营销策划公司
  • 为什么做域名跳转网站样式不见了软件开发培训
  • 建设人才库网站短视频seo推广隐迅推专业
  • 网站管理助手 phpmyadmin网络营销概述ppt
  • wordpress调用多个分类谷歌seo引擎优化
  • Wordpress网格插件网站优化的方式有哪些
  • 为什么没人做同城购物网站360搜索引擎入口
  • 网站推广意义seo建站
  • python语言属于什么语言上海专业seo公司
  • 公司商城网站建设制作网站建设入门
  • 贵州建设职业技术学院报名网站篮网最新消息
  • 网站单页seo外贸网站模板
  • 计算机毕设代做网站互联网营销课程体系
  • 虚拟主机如何做网站深圳网络优化公司
  • 海宁网站建设个人网站设计成品
  • 规划电子商务网站建设方案做网站怎么优化
  • 网页设计制作个人网站百度seo营销