Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ lock_guard

作者:冷空气来袭   发布日期:2025-08-16   浏览:49

#include <iostream>
#include <mutex>
#include <thread>

std::mutex mtx; // 定义一个互斥锁

void print_block(int n, char c) {
    // 使用 lock_guard 自动管理互斥锁的锁定和解锁
    std::lock_guard<std::mutex> guard(mtx);
    for (int i = 0; i < n; ++i) {
        std::cout << c;
    }
    std::cout << '\n';
}

int main() {
    std::thread th1(print_block, 50, '*');
    std::thread th2(print_block, 50, '$');

    th1.join();
    th2.join();

    return 0;
}

解释说明:

  • std::mutex mtx;:定义了一个互斥锁对象 mtx,用于保护共享资源。
  • std::lock_guard<std::mutex> guard(mtx);:使用 lock_guard 来自动管理互斥锁。当 lock_guard 对象创建时,它会自动锁定互斥锁;当 lock_guard 对象超出作用域时(即函数结束或块结束),它会自动解锁互斥锁。
  • print_block 函数中,lock_guard 确保了在该函数执行期间,只有一个线程可以访问临界区(即输出字符的操作),从而避免了竞争条件。

通过这种方式,lock_guard 提供了一种简单且安全的方式来管理互斥锁,防止忘记解锁导致的死锁问题。

上一篇:c++十进制转换为二进制代码

下一篇:c++ sin

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++ orm框架

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ vector 清空

c++ tcp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站