zoukankan      html  css  js  c++  java
  • 信号量互斥编程

    信号量互斥

    一。公示栏问题

      1.问题描述

      2.问题程序化

      3.信号量概念

        (1)信号量分类

           二值信号灯:信号灯的值只能是取0或1

           计数信号灯:信号灯的值可以取任意非负值

    二。函数学习

      1.创建/打开信号量

        函数名       semget   

        函数原型      int semget (key_t key ,int nsems,int semflg)

        函数功能      获取信号量集合的标示符

                  当key所指定的信号量不存在的时候,并且semflg包含了IPC_CREAT,这个时              候,就会创建一个信号量集合

        函数头文件     <sys/type.h><sys/ipc.h><sys/sem.h>

        函数返回值     成功时:返回信号量集合的标示符

                  失败时:返回的-1

        函数参数类型    key: 键值     

                  nsems:标志:可以取IPC_CREAT 

                  semflg:创建的这个信号量集合中包含的信号量的数目

        (2)指定键值

          1.任意指定一个数

           缺点:这个数已经被别的IPC对象(消息队列,共享内存)所使用了,在与新创建的信号量关联就会失败

          2.构造一个尽量不会被别的IPC对象所用数的方法:

           使用key_t ftok(char *fname ,int id)

      2.操作信号量    

        函数名       semop

        函数原型      int semop(int semid, struct sembuf*sops,unsigned nsops)

        函数功能      操作信号量

        函数头文件     <sys/sem.h><sys/type.h><sys/ipc.h>

        函数返回值     成功:0

                  失败:-1

        函数参数类型    semid: 要操作的信号量集合的标示符

                  sembuf *sops:对信号量执行什么样的操作

                  nsops:要操作多少个信号量

     

  • 相关阅读:
    dapper hepler帮助类
    别人在用你的什么技术在赚钱.其实你天天在做
    把asp.net mvc5 controller 单独放置在一个项目实例
    重写和动态创建 asp.net mvc 的控制器
    Linux 配置环境变量,环境变量优先级
    Redhat/ Centos/Ubuntu Linux sudo 权限配置,添加root权限
    Linux和window的文件传输 ( NFS篇 )
    安装R软件,R-3.5.3软件的下载、编译及安装
    yum 源
    瓜大无人船踩坑记3
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/4962188.html
Copyright © 2011-2022 走看看