c++

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

小樊
82
2024-09-13 03:14:21
栏目: 编程语言

在 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,从而避免输出混乱。

0
看了该问题的人还看了