信号量的 P/V 为什么要这么命名

一、引言

有没有人跟我一样,在学习信号量的时候,曾经问过自己这么一个问题:

信号量的 P/V 操作,为什么要这么命名

P 代表了哪个单词,V 又代表了哪个单词。问了自己之后,仿佛又找不到对应的英文单词能够方便记忆,于是乎只能通过死记硬背来记住。

二、探索

直到,我看到了《Linux程序设计(第四版)》第 14 章,才知道了真正的答案(以下摘自第 14.1 章节):

信号量的一个更正式的定义是:它是一个特殊变量,只允许对它进行等待(wait)和发送信号(signal)这两种操作。因为在 Linux 编程中,“等待” 和 “发送信号” 都已具有特殊的含义,所以我们将用原先定义的符号来表示这两种操作
P(信号量变量):用于等待。
V(信号量变量):用于发送信号。
这两个字母分别来自于荷兰语单词 passeren(传递,就好像位于进入临界区域之前的检查点)和 vrijgeven(给予或释放,就好像放弃对临界区域的控制权)。

也就是说,P 来自于荷兰语 Passeren,意味着进入临界区域,V 来自于荷兰语 vrijgeven,意味着放弃临界区域。

那么问题由来了,为啥是荷兰语呢?

因为信号量的概念就是荷兰计算机科学家 Edsger Dijkstra 提出来的,信号量的概念是并发编程领域的一大重大的进步。

可能有人会觉得 Dijkstra 非常的熟悉,仿佛就好像是 Dijkstra 算法的命名,是的,就是他,就是那个迪杰特斯拉算法的作者,也就是他提出来了信号量!!!

很有趣吧,你会发现,计算机科学领域里面的哪怕是一个技术的惯用命名,都有着深厚的历史渊源。偶尔去探索一下,都会发现不少有趣的信息。

To be Stronger:)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值