C++线程安全的互斥锁实现方式
在C++多线程编程中,如何确保共享数据的线程安全?请列举std::mutex的不同变体及其适用场景。
回答
我还是少年
使用std::mutex加锁保护临界区。变体包括:1)std::mutex:基本互斥锁,不支持递归加锁;2)std::recursive_mutex:允许同一线程多次加锁,适用于递归函数;3)std::shared_mutex(C++17):读写锁,读线程共享锁,写线程独占锁;4)std::timed_mutex:带超时的互斥锁。C++20引入std::counting_semaphore和std::binary_semaphore作为更轻量的同步原语。