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

外包优化网站查发分类信息网

外包优化网站,查发分类信息网,网站设计公司业务怎么做,哪些网站可以做任务挣钱什么是信号量 信号量的本质是一种数据操作锁、用来负责数据操作过程中的互斥、同步等功能#xff0c;信号量用来管理临界资源的#xff0c;它本身只是一种外部资源的标识、不具有数据交换功能#xff0c;而是通过控制其他的通信资源实现进程间通信#xff0c;信号量就相当…什么是信号量 信号量的本质是一种数据操作锁、用来负责数据操作过程中的互斥、同步等功能信号量用来管理临界资源的它本身只是一种外部资源的标识、不具有数据交换功能而是通过控制其他的通信资源实现进程间通信信号量就相当于是一个计数器。当有进程对它所管理的资源进行请求时进程先要读取信号量的值大于0资源可以请求等于0资源不可以用这时进程会进入睡眠状态直至资源可用。当一个进程不再使用资源时信号量1(对应的操作称为V操作)反之当有进程使用资源时信号量-1(对应的操作为P操作)。对信号量的值操作均具有原子性。 一般说来为了获得共享资源进程需要执行下列操作 1 测试控制该资源的信号量。 2 若此信号量的值为正则允许进行使用该资源。进程将信号量减1。 3 若此信号量为0则该资源目前不可用进程进入睡眠状态直至信号量值大于0进程被唤醒转入步骤1。 4 当进程不再使用一个信号量控制的资源时信号量值加1。如果此时有进程正在睡眠等待此信号量则唤醒此进程。 为什么要用信号量 使用信号量为了防止多个进程在访问临界资源为引发的问题。信号量可以协调进程对临界资源的访问也就是用来临界区的。任一时刻只能有一个进程进入临界区。 LINUX 下定义信号量 是一个集合所以用结构体 struct semaphore {spinlock_t lock;unsigned int count;struct list_head wait_list; }; 其工作原理 信号量只能进行两种操作等待和发送信号即P(sv)和V(sv),他们的行为是这样的 P(sv)如果sv的值大于零就给它减1如果它的值为零就挂起该进程的执行 。 V(sv)如果有其他进程因等待sv而被挂起就让它恢复运行如果没有进程因等待sv而挂起就给它加1. 代码 comm.h #ifndef _COMM_H #define _COMM_H#includestdio.h #includesys/types.h #includestring.h #includesys/sem.h #includesys/ipc.h #includestdlib.h#define PATHNAME . #define PROJ_ID 6666union SemNo {int val;struct semid_ds* buf;unsigned short* array;struct seminfo* _buf; };int CreateSemSet(int nums); int GetSemSet(); int InitSemSet(int semid, int nums); int P(int semid); int V(int semid); int DestorySemSet(int semid);#endifcomm.c #includecomm.h int CommSemSet(int flags, int nums) {key_t _kftok(PATHNAME, PROJ_ID);if(_k 0){perror(ftok);sleep(3);return -1;}int semid semget(_k, nums, flags);if(semid 0){perror(semget);sleep(3);return -2;}return semid; } int CreateSemSet(int nums) {return CommSemSet(IPC_CREAT | IPC_EXCL | 0666, nums); } int GetSemSet() {return CommSemSet(0, 0); } int InitSemSet(int semid,int nums) {union SemNo _SenNo;_SenNo.val1;if(semctl(semid,nums,SETVAL,_SenNo)0){perror(semctl);sleep(3);return -1;}return 0; } int CommPV(int semid ,int nums, int flags) {struct sembuf _sf[1];_sf[0].sem_opflags;_sf[0].sem_numnums;if(semop(semid, _sf, 1) 0){perror(semop);sleep(3);return -1;}return 0; } int P(int semid) {return CommPV(semid, 0, -1); } int V(int semid) {return CommPV(semid, 0 ,1); } int DestorySemSet(int semid) {if(semctl(semid, 0, IPC_RMID) 0){perror(semctl);sleep(3);return -1;}return 0; }sem.c #includecomm.hint main() {int semid CreateSemSet(1);InitSemSet(semid,0);pid_t id fork();if(id 0) {int semid GetSemSet();while(1){P(semid);printf(A);fflush(stdout);usleep(20000);printf(A\n);fflush(stdout);usleep(30000);V(semid);}}else{while(1){P(semid);printf(B);fflush(stdout);usleep(30000);printf(B\n);fflush(stdout);usleep(20000);V(semid);}}DestorySemSet(semid); }
http://www.hkea.cn/news/14480040/

相关文章:

  • 九江网站设计广州微网站建设价位
  • 网站建设初期推广方式photoshop画简单网站
  • 做国外单的网站叫什么名字淘宝怎么才能发布网站建设
  • 网站标题优化排名企业信用信息公示系统年报怎么填
  • 网站建设与网页制作基础入门教程更换网站空间
  • 网站的建设与规划方案ui做标注的网站
  • 民宿网站建设网站的功能
  • 街道网站建设wordpress模版seo
  • 办网站费用多少钱凤凰自媒体平台注册
  • wordpress做小说网站吗安卓上架app要多少钱
  • 广西南宁建设厅网站首页服务器绑定网站打不开
  • 网站统计代码添加三明seo优化
  • 宝安网站设计网站建设哪家快做网站困难吗
  • 怎样做网站营销php网站源代码修改
  • 网站手机版济宁高端网站建设
  • html5响应式网站建设平台wordpress解密主题
  • 北京大兴行业网站建设公司网站开发过什么软件
  • 怎么建设一个网站手动修改目录wordpress
  • 眼科医院网站开发网站管理入口
  • 朔州网站建设公司养老网站建设合同
  • 网站设计 成都设计建立企业网站最佳的公司
  • 深圳网站建设比较手机上免费制作ppt的软件
  • 重庆网站建设哪家好网站设计可以吗
  • 构建网站需要会什么浙江网缘电子商务有限公司
  • 扬州市住房和建设局网站canva可画在线设计平台
  • 视频网站空间制作网站代码
  • 单位门户网站可以做百度百科泉州网站建设服务
  • 未央网站建设洛阳建站
  • 淘宝购物券网站怎么做公司网站推广的方法
  • 杭州网站建设第一品牌网站设计文案