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:要操作多少个信号量

     

  • 相关阅读:
    iOS SpriteKit 字体设置无效问题
    2021又来到了!
    其他人员优点
    自己缺点记录
    领导优点分析-于总
    领导优点分析-黄总
    Linux CentOS 7 安装字体库 & 中文字体
    mysql备份数据库
    MySQL mysqldump 导入/导出 结构&数据&存储过程&函数&事件&触发器
    mysql 导入导出数据库以及函数、存储过程的介绍
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/4962188.html
Copyright © 2011-2022 走看看