legongju.com
我们一直在努力
2025-01-19 03:54 | 星期天

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

在 C++ 中,您可以使用 库来实现多线程环境下的 println

#include
#include
#include 

std::mutex mtx; // 全局互斥锁

void println(const std::string& msg) {
    std::unique_lock 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,从而避免输出混乱。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/91205.html

相关推荐

  • c++ mysql库的数据更新与删除操作

    c++ mysql库的数据更新与删除操作

    在C++中,可以使用MySQL C++ Connector库来进行数据更新和删除操作。以下是一个简单的示例代码,展示如何使用MySQL C++ Connector库来进行数据更新和删除操作:<...

  • c++ memset_s与memset有何不同

    c++ memset_s与memset有何不同

    memset_s 和 memset 都是 C++ 中用于设置内存区域的函数,但它们之间存在一些关键差异 安全性:memset_s 是一个更安全的版本,因为它会检查目标缓冲区的大小。如...

  • c++中使用memset_s需要注意什么

    c++中使用memset_s需要注意什么

    在C++中,memset_s函数是一个安全的内存设置函数,它可以防止缓冲区溢出 包含头文件:在使用memset_s之前,请确保已经包含了正确的头文件。对于C++,应该包含头文...

  • c++ memset_s如何安全清零内存

    c++ memset_s如何安全清零内存

    在C++中,memset_s是一个安全的方法来清零内存
    #include
    #include int main() { char buffer[100]; // 填充缓冲区 for (int i = 0; i< sizeof(buffer)...

  • C++中println函数的应用场景有哪些

    C++中println函数的应用场景有哪些

    在C++中,println函数并不是标准库中的一部分,但我们可以自己实现一个类似的功能。println(或者说类似的输出函数)的主要应用场景包括: 控制台输出:在命令行...

  • 如何优化C++中println函数的性能

    如何优化C++中println函数的性能

    在 C++ 中,std::cout 是一个非常常用的输出流对象,用于将数据输出到标准输出设备(通常是显示器) 使用 '\n' 代替 std::endl: std::endl 不仅会添加一个换行符...

  • 在C++项目中如何选择合适的println实现方式

    在C++项目中如何选择合适的println实现方式

    在C++项目中,有多种方法可以实现类似于Java中的System.out.println()功能 使用std::cout:这是C++标准库中最常用的输出流对象,用于向标准输出设备(通常是显示...

  • C++中println函数的错误处理机制是什么

    C++中println函数的错误处理机制是什么

    在 C++ 中,println 函数并不是标准库中的一部分。然而,我们可以讨论 C++ 中用于输出和错误处理的标准方法。
    在 C++ 中,std::cout 用于向标准输出流(通常...