直接回答:互斥锁是二元的(只有锁定/未锁定两态),强调所有权:谁加锁谁解锁,用于保护临界区互斥访问。信号量是计数器,可取 0 到 N 的值,没有所有权概念——一个线程可以 P(wait)而由另一个线程 V(signal),因此既可用于互斥(初值 1),也可用于同步和资源计数。
展开解析:所有权差异带来实用区别:互斥锁可以做优先级继承、递归锁、所有者检测等强化,信号量做不到;但"生产者把一个资源放入池中、由消费者取走"这类跨线程交接的场景,信号量天然合适,互斥锁反而表达不了。初值为 1 的二值信号量功能上接近互斥锁,但语义上仍是两个东西——面试中答"二值信号量等于互斥锁"是不严谨的。追问方向:用信号量实现生产者—消费者模型(empty/full 两个信号量加互斥锁)、信号量的 P/V 原语与条件变量的等价性、优先级反转问题。