Linux中与信号量有关的函数调用 semget, semop, semctl

本文介绍了Linux中用于控制临界资源的信号量机制,详细讲解了与信号量相关的三个系统调用函数semget、semop和semctl的使用方法、参数解释及操作实例,帮助理解如何在多进程环境中实现资源的同步和互斥。
摘要由CSDN通过智能技术生成

      信号量是一种用于对多个进程访问的临界资源进行控制的一种机制。简单来说,信号量的实质是一个整型计数器,当信号量为非负值时,它表示可供访问的临界资源的单元个数;当信号量的值为负时,它表示等待临界资源的进程数。

与信号量有关的系统调用函数有三个,下面将分别介绍。

相关结构体声明:

   每个信号量集都有一个与其对应的结构,用来记录信号量集的各种信息,具体定义如下所示:

       struct semid_ds

{

     struct ipc_perm sem_perm;      //信号量集的所有者和权限

     struct sem* sem_base;        //指向信号量集中第一个信号量的sem结构

     ushort sem_nsems;     //信号量集中信号量的个数

     time_t sem_otime;        //最近一次调用semop函数的时间

     time_t sem_ctime;      //最近一次改变该信号量集的时间

};

sem结构用于记录一个信号量的信息,具体定义如下:

 struct sem

{

     ushort semval;    //信号量的值

     pid_t pid;    //最近一次访问该资源的进程pid

     ushort semncnt;      // 等待资源的进程数

     ushort semzcnt;      //可用资源的数量

};

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值