C++中的锁
C++中的锁是为了实现多线程编程时线程的同步和互斥机制。在多线程编程中,多个线程可能同时访问一个共享资源,如果没有合适的同步和互斥机制,会出现数据竞争和死锁的问题。
- 读写锁:
std::shared_mutex
,读写锁允许多个线程同时对共享资源进行读操作,但是不可以同时进行写操作。当一个线程获取到读锁时,其他线程可以获取读锁,但是无法获取写锁;当一个线程获取到写锁时,其他线程读锁和写锁都无法获取。 - 互斥锁:
std::mutex
,互斥锁就是基本的锁,保证同一时间只有一个线程访问共享资源,当一个线程获取互斥锁时,其他线程不能获取锁,直到该线程锁释放。 - 条件变量:条件变量主要用于线程间通信,可以使用
wait
让一个线程等候另一个线程的通知,当要等候的线程准备完成后,可以使用notify_one/notify_all
来通知等待的线程;条件变量可以通过std::condition_variable
类来实现。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment