如何在C++中实现多线程环境下的println

1949idc 2年前 (2024-09-18) 阅读数 293 #编程语言

在 C++ 中,您可以使用 和<thread> 库来实现多线程环境下的 println

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

std::mutex mtx; // 全局互斥锁

void println(const std::string& msg) {
    std::unique_lock<std::mutex> lock(mtx); // 加锁
    std::cout<< msg<< std::endl;
    lock.unlock(); // 解锁
}

void print_numbers() {
    for (int i = 0; i < 10; ++i) {
        println("Thread 1: " + std::to_string(i));
        std::this_thread::sleep_for(std::chrono::milliseconds(100));
    }
}

void print_letters() {
    for (char c = 'A'; c <= 'J'; ++c) {
        println("Thread 2: " + std::string(1, c));
        std::this_thread::sleep_for(std::chrono::milliseconds(150));
    }
}

int main() {
    std::thread t1(print_numbers);
    std::thread t2(print_letters);

    t1.join();
    t2.join();

    return 0;
}

这个示例中,我们创建了两个线程,一个打印数字,另一个打印字母。println 函数使用互斥锁确保在多线程环境下输出的正确性。当一个线程获得锁时,另一个线程必须等待,直到锁被释放。这样可以确保每次只有一个线程访问 std::cout,从而避免输出混乱。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业