首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++中的锁和互斥锁

在C++中,锁和互斥锁是用于同步多线程程序的关键机制。锁是一种保护共享资源的方法,确保同一时间只有一个线程可以访问共享资源。互斥锁是一种特殊类型的锁,它可以阻止多个线程同时访问共享资源。

在C++中,可以使用std::mutexstd::unique_lock来实现互斥锁。std::mutex是一个互斥锁类,可以使用lock()unlock()方法来锁定和解锁互斥锁。std::unique_lock是一个智能锁类,可以在构造函数中锁定互斥锁,并在析构函数中自动解锁互斥锁。

以下是一个简单的示例代码,展示了如何使用互斥锁来保护共享资源:

代码语言:c++
复制
#include <mutex>
#include<thread>

std::mutex mtx;

void print_thread_id(int id) {
    std::unique_lock<std::mutex> lock(mtx);
    std::cout << "Thread " << id << " is running"<< std::endl;
}

int main() {
    std::thread threads[10];

    for (int i = 0; i < 10; ++i) {
        threads[i] = std::thread(print_thread_id, i);
    }

    for (auto& t : threads) {
        t.join();
    }

    return 0;
}

在这个示例中,我们创建了10个线程,每个线程都会尝试打印自己的线程ID。为了确保同一时间只有一个线程可以访问std::cout,我们使用了互斥锁。每个线程在打印之前都会锁定互斥锁,打印完成后再解锁互斥锁。这样可以确保每个线程的输出不会被其他线程干扰。

总之,锁和互斥锁是C++中用于同步多线程程序的重要机制,可以有效地保护共享资源,避免不必要的竞争和错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

24分33秒

269_尚硅谷_Go核心编程_全局互斥锁解决资源竞争.avi

6分39秒

45-乐观锁和悲观锁

10分6秒

35_多线程锁之公平锁和非公平锁

23分24秒

27_java锁之可重入锁和递归锁代码验证

8分57秒

26_java锁之可重入锁和递归锁理论知识

19分32秒

179-页锁的理解、乐观锁与悲观锁的使用

9分28秒

19-尚硅谷-JUC高并发编程-多线程锁-公平锁和非公平锁

12分54秒

22-尚硅谷-Redis6-事务和锁机制-事务冲突(悲观锁和乐观锁)

8分50秒

135_synchronized锁升级之锁升级后和hashcode关系

9分4秒

40_多线程锁之objectMonitor和synchronized锁小总结

5分55秒

136_synchronized锁升级之锁升级后和hashcode代码证明

7分39秒

23-尚硅谷-Redis6-事务和锁机制-演示乐观锁和事务特性

领券