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

     

  • 相关阅读:
    删除购物车列表页面商品
    购物车页面修改数量功能实现
    cookie来实现购物车功能
    wxWidgets学习计划
    正则校验表达式
    Vue组件间的参数传递与Vue的路由实现
    Vue实现数据双向绑定的原理
    Vue的生命周期
    对于mvvm的理解
    vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/4962188.html
Copyright © 2011-2022 走看看