溫馨提示×

如何在C++中實現多線程環境下的println

c++
小樊
95
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女