信号(Signal) vs 信号量(Semaphore)

信号(Signal) vs 信号量(Semaphore)

  • 信号 = 异步通知、事件提醒(告诉你"发生了什么事")
  • 信号量 = 同步互斥、计数器(控制"能不能用、几个人用")

完全不是一个东西,只是名字像。


1. 信号(Signal)

作用:进程之间发"事件通知"

  • 软中断,异步机制
  • 只传事件编号,不传复杂数据
  • 典型:kill、Ctrl+C、程序异常

例子

  • SIGINT (2):Ctrl+C 中断
  • SIGKILL (9):强制杀死进程
  • SIGUSR1:用户自定义信号

Java 里怎么用

  • 只能通过 sun.misc.Signal 或 JVM 参数处理
  • 一般用来优雅关闭、重启、通知

2. 信号量(Semaphore)

作用:控制资源并发访问、同步互斥

  • 一个计数器
  • 控制多少个线程/进程能同时进入临界区
  • 用于锁、限流、同步

例子

  • 二元信号量(0/1)= 互斥锁
  • 计数信号量(5)= 最多 5 个并发

Java 里就是

java 复制代码
Semaphore semaphore = new Semaphore(5); // 最多5个
semaphore.acquire();  // 拿许可
semaphore.release();  // 还许可

3. 核心区别(面试必背)

对比项 信号 Signal 信号量 Semaphore
功能 异步事件通知 同步/互斥、并发控制
数据 只传信号编号 计数器(许可数)
机制 异步、中断式 同步、阻塞/非阻塞
用途 杀进程、重启、通知 锁、限流、共享资源保护
典型场景 Ctrl+C、kill、异常 限流器、生产者消费者
是否传数据 不传递业务数据 不直接传数据,只做控制

4. 最简单记忆法

  • 信号 = 门铃:响一下告诉你"有事"
  • 信号量 = 门禁:控制几个人能进房间
相关推荐
OpenAnolis小助手1 天前
RISC-V 基础软件的工程化与性能优化实践
性能优化·操作系统·龙蜥社区·risc-v
青梅味猪大肠2 天前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
PMAOS5 天前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
罗四强5 天前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
Liaiyang667 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手7 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
阿里云基础软件7 天前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
OpenAnolis小助手8 天前
多租户公有云共享 CXL 内存池场景下的内存卸载研究
人工智能·操作系统·龙蜥社区·risc-v·agentic os
OpenAnolis小助手10 天前
PHP 两个严重漏洞曝光,龙蜥社区 24 小时完成 3 版本修复
开发语言·操作系统·php·龙蜥社区
硅基手札11 天前
操作系统设计思想系列 13 · NuttX 深度 — POSIX 飞控底座 + RTOS 群像
架构·操作系统·嵌入式开发·ecos·sel4·nuttx