面试题答案
一键面试- 互斥锁(Mutex):
- 场景:适用于保护共享资源,确保同一时间只有一个线程能访问该资源,防止数据竞争。比如多个线程同时访问和修改一个全局变量时,就可以使用互斥锁。
- 信号量(Semaphore):
- 场景:当需要控制同时访问某一资源的线程数量时使用。例如数据库连接池,限制同时连接数据库的线程数,避免过多连接导致数据库负载过高。
- 条件变量(Condition):
- 场景:适用于线程间需要根据特定条件进行协调的场景。比如生产者 - 消费者模型中,消费者线程需要等待生产者线程生产出数据后(满足一定条件)才能继续消费,这时可以使用条件变量。