41、UNIX 信号量与共享内存实用程序详解

UNIX 信号量与共享内存实用程序详解

1. 信号量操作基础

1.1 信号量等待与通知

首先,打开第二个终端会话,尝试以下信号量等待操作:

$ x/semop -k0xFEEDF00D -a -o 0=-6,1=-4 -G
  -a 0xFEEDF00D => IPC ID 196608
  There are 3 semaphores in this set.

如果信号量的值与之前的示例匹配,这个实用程序会在此处挂起。这是因为请求从信号量 1 获取 4 个资源,但当前计数仅为 3。在应用程序等待时,在另一个终端会话中执行以下命令:

$ ./semop -k0xFEEDF00D -a -o 1=+2
  -a 0xFEEDF00D => IPC ID 196608
  There are 3 semaphores in this set.
  -o 1=+2 => { 1,+2,0}

当此命令执行时,信号量 1 被通知增加 2,计数从 3 变为 5,满足了之前的请求,等待的进程能够成功从 semop(2) 返回:

$ ./semop -k0xFEEDF00D -a -o 0=-6,1=-4 -G
  -a 0xFEEDF00D => IPC ID 196608
  There are 3 semaphores in this set.
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值