在多线程编程中,lock
(锁)是一种同步机制,用于保护共享资源,防止多个线程同时访问导致的数据不一致或竞态条件。使用锁调用成员函数通常涉及以下几个概念:
std::mutex
(C++)。std::shared_mutex
(C++)。std::atomic_flag
(C++)。以下是一个使用 std::mutex
保护成员函数的示例:
#include <iostream>
#include <thread>
#include <mutex>
class Counter {
public:
void increment() {
std::lock_guard<std::mutex> lock(mutex_);
++count_;
}
int getCount() const {
std::lock_guard<std::mutex> lock(mutex_);
return count_;
}
private:
int count_ = 0;
mutable std::mutex mutex_;
};
void threadFunc(Counter& counter) {
for (int i = 0; i < 1000; ++i) {
counter.increment();
}
}
int main() {
Counter counter;
std::thread t1(threadFunc, std::ref(counter));
std::thread t2(threadFunc, std::ref(counter));
t1.join();
t2.join();
std::cout << "Final count: " << counter.getCount() << std::endl;
return 0;
}
通过以上内容,你应该对使用锁调用成员函数的基础概念、优势、类型、应用场景以及常见问题有了全面的了解。
领取专属 10元无门槛券
手把手带您无忧上云