进程间通信之Posix 信号量

本文介绍了Posix信号量作为进程间通信和同步原语的概念,详细阐述了有名信号量和基于内存的信号量,包括创建、等待、挂出等操作。同时,对比了相关函数,如sem_open、sem_close、sem_unlink、sem_wait等的使用,并探讨了信号量与互斥锁、条件变量的区别。
摘要由CSDN通过智能技术生成

概述

    信号量(semaphore)是一种用于提供不同进程间或者一个给定进程的不同线程间同步手段的原语。

    本文讨论:

    1.Posix 有名信号量:使用Posix IPC 名字标识,可用于进程或线程间的同步。

    2.Posix 基于内存的信号量:存放在共享内存区中,可用于进程或线程间的同步。


    我们暂时只考虑不同进程间的同步。首先考虑二值信号量(binary semaphore):其值或为0或为1的信号量。




    Posix 信号量不必在内核中维护。另外,Posix 信号量是由可能与文件系统中的路径名对应的名字来标识的,但是并不要求它们真正存放在文件系统内的某个文件中。


    由上图可看出,进程可以在某个信号量上执行三种操作:

    1.创建一个信号量。要求调用者指定初始值,对于二值信号量来说,它通常是1,但也可以是0。

    2.等待一个信号量。该操作会测试这个信号量的值,如果其值小于或等于0,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值