zoukankan      html  css  js  c++  java
  • 信号量同步编程

    信号量同步

    一。核心概念

      进程同步核心概念:一组并发进程进行互相合作,互相等待,使得各进程按一定的顺序执行的过程

      称为进程间的同步。

    二。生产力消费问题

      (1)问题描述      

      (2)问题程序化         

        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
        #include <unistd.h>
        #include <sys/ipc.h>
        #include <sys/sem.h>

        void main()
        {
          int fd;
          int semid;
          struct sembuf sops;
          key_t key;
          key = ftok("/home",2);
          /*创建信号量*/
          semid = semget(key,1,IPC_CREAT);
          semctl(semid,0,SETVAL,0);
          /*创建产品-文件*/
          fd = open("./product.txt",O_RDWR|O_CREAT,0775);
          /*休息*/
          sleep(20);
          /*向产品文件里面填充内容*/
          write(fd,"the product is finished",25);
          close(fd);
          /*释放信号量*/
          sops.sem_num = 0;
          sops.sem_op = 1;
          sops.sem_flg = SEM_UNDO;
          semop(semid,&sops,1);
          }

      /******************************************/      

        #include <stdlib.h>
        #include <sys/ipc.h>
        #include <sys/sem.h>
        #include <sys/types.h>
        #include <stdio.h>

        void main()
        {
          int fd;
          int semid;
          int ret;
          struct sembuf sops;
          key_t key;
          key = ftok("/home",2);
          /*创建信号量*/
          semid = semget(key,1,IPC_CREAT);
          /*获取信号量*/
          sops.sem_num = 0;
          sops.sem_op = -1;
          sops.sem_flg = SEM_UNDO;
          ret = semop(semid,&sops,1);
          printf("val = %d ",ret);
          /*取走产品文件*/
          system("cp ./product.txt ./ship/");
         }

      (3)加入同步控制      

         信号量控制把同步进行任务完成

  • 相关阅读:
    移动端按钮居底
    easyui用KindEditor编辑器
    查找数组中与后面项匹配的和猴子选大王
    before和after的样式符号
    jq的select
    验证最多2位小数,1到10 不超过10 带两位小数的正则表达式
    在谷歌浏览器下vue的@input事件问题
    mvc项目+vue+vant【进行中】
    微商代理查询系统 开发完成,免费体验试用哦!
    淘宝出了个麻吉宝区块连产品,附带麻吉宝邀请码!
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/4963328.html
Copyright © 2011-2022 走看看