GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing notes.kamacoder.com — C++11多线程编程与锁:mutex、lockguard、uniquelock、条件变量、原子操作 # C++11多线程编程与锁面试官问:"C++11 的多线程和锁机制了解吗?lock_guard 和 unique_lock 有什么区别?" 多线程是 C++ 后端面试的重头戏。很多人能说出 mutex 和 lock_guard,但问到 unique_lock 为什么能配合条件变量、死锁怎么避免,就答不上来了。关键是理解这些组件之间的配合关系。 # 简要回答C++11 通过
# 详细回答线程管理
互斥锁体系
RAII 锁管理 直接用
条件变量
原子操作
# 知识拓展面试官可能追问: Q1: lock_guard 和 unique_lock 有什么区别? lock_guard 更轻量,构造即加锁、析构即解锁,中间不能动。unique_lock 更灵活,支持延迟加锁( Q2: 什么是死锁?怎么避免? 两个线程各持有一把锁,又都在等对方的锁,谁也不放手——永久阻塞。避免方法:统一加锁顺序(所有线程都先锁 A 再锁 B)、用 Q3: 条件变量为什么必须配合 unique_lock? 因为 Q4: atomic 和 mutex 怎么选? 简单的单变量读写(计数器、标志位)用 atomic,零锁开销。涉及多个变量的复合操作(比如同时修改 balance 和 log)必须用 mutex,因为 atomic 只保证单个操作的原子性,不保证多个操作之间的一致性。 评论验证登录状态... |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |