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

c++ 11

作者:绝朢╭ァ   发布日期:2025-07-07   浏览:74

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

std::mutex mtx;

void print_block(int n, char c) {
    // 互斥锁确保同一时间只有一个线程可以执行这块代码
    std::lock_guard<std::mutex> lock(mtx);
    for (int i = 0; i < n; ++i) {
        std::cout << c;
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
    std::cout << '\n';
}

int main() {
    // 使用 lambda 表达式作为线程函数
    std::thread th1(print_block, 5, '*');
    std::thread th2(print_block, 5, '$');

    th1.join(); // 等待 th1 完成
    th2.join(); // 等待 th2 完成

    return 0;
}

解释说明:

  1. <thread><mutex>:引入了 C++11 的多线程库,使得我们可以使用 std::thread 来创建线程,并使用 std::mutex 来保证线程安全。
  2. std::lock_guard:这是一个 RAII(Resource Acquisition Is Initialization)风格的锁管理器,它会在构造时自动加锁,在析构时自动解锁,确保即使在异常情况下也能正确释放锁。
  3. std::this_thread::sleep_for:让当前线程休眠指定的时间,这里用于模拟一些耗时操作。
  4. th1.join()th2.join():等待线程完成。如果不调用 join()detach(),主线程结束时会抛出异常。

这个例子展示了如何使用 C++11 的多线程功能来创建和管理线程,并通过互斥锁确保线程安全。

上一篇:c++ mutable

下一篇:c++if语句

大家都在看

c++闭包

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

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

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

Laravel 中文站