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

avatar
作者
猴君
阅读量: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,从而避免输出混乱。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!