条件竞争
- 定义:指多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间的情形 --百度百科
- 产生条件:取决于一个线程以上的相对运行顺序,每个线程都抢着完成自己的任务
- 避免方法:原子操作、互斥量
C++互斥量
- 直接使用
类声明:
std::mutex
类成员:lock() unlock()
特点:必须记住要在函数出口调用unlock().
- 借助RAII类模板:
std::lock_guard<>
实例化:
std::lock_guard<std::mutex>
类成员:lock() unlock() try_lock
特点:实例化并初始化时如std::lock_guard<std::mutex> guard(mutex)提供已上锁的互斥量,并在析构时解锁.
- 借助RAII类模板:
std::unique_lock<>
实例化:
std::unique_lock<std::mutex>
类成员:lock() unlock() try_lock
特点:使用更灵活,支持不同域中所有权的传递

本文介绍了条件竞争的概念及其产生的原因,并详细探讨了如何通过原子操作、互斥量等手段来避免条件竞争的发生。特别地,文章深入讲解了C++中的互斥量使用方法,包括直接使用std::mutex及借助RAII类模板std::lock_guard和std::unique_lock。
2088

被折叠的 条评论
为什么被折叠?



