在 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
,從而避免輸出混亂。