首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信号量是否总是初始化到它可以接受的最大值?

信号量是否总是初始化到它可以接受的最大值?
EN

Software Engineering用户
提问于 2020-11-02 14:53:49
回答 1查看 1.1K关注 0票数 0

根据维基百科维基百科的说法:

信号量是防止种族状况的有用工具;然而,使用信号量并不能保证程序不受这些问题的影响。允许任意资源计数的信号量称为计数信号量,而限制在值0和1(或锁定/未锁定、不可用/可用)的信号量称为二进制信号量,用于实现锁。

信号量是否总是初始化到它可以接受的最大值?

计数信号量和二进制信号量之间的区别仅仅是它们的初始值:信号量是二进制的当且仅当它被初始化为1,而计数而不是二进制的当且仅当它被初始化为大于1的整数时?

EN

回答 1

Software Engineering用户

发布于 2020-11-02 16:32:33

不同之处在于其目的:二进制信号量通常用于实现互斥,而计数信号量则限制访问。但最终,二进制信号量只是计数信号量的一个特例。

细节仍然取决于实现。例如,在POSIX标准中,信号量是计数信号量。因此,初始值(在未命名信号量的情况下用sem_init()定义)实际上将定义它是否是二进制的。然而,计数sempahore仍然是一个计数信号量,使用更多的sem_post() ( remains )而不是sem_wait()(获取)将使信号量的值超过初始值(演示)。顺便说一下,这还允许在已经锁定的状态下创建一个信号量(初始值为0)。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/418599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档