阅读量:0
在 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
,从而避免输出混乱。