多线程

简介: 多线程

1.介绍

多线程是指在一个程序中同时运行多个线程来完成不同的任务。每个线程都有自己的指令指针、寄存器和栈,但是它们共享同一个地址空间和其他资源,如打开的文件和全局变量

C++11 引入了对多线程的支持,包括 std::thread 类和相关的同步原语,如 std::mutexstd::condition_variable。使用这些类和函数,可以在 C++ 程序中创建和管理多个线程

2.例子

下面是一个简单的示例,演示如何在 C++ 中创建和使用多个线程:

#include <iostream>
#include <thread>
void print(int n) {
    for (int i = 0; i < n; ++i) {
        std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl;
    }
}
int main() {
    std::thread t1(print, 3);
    std::thread t2(print, 5);
    t1.join();
    t2.join();
    return 0;
}

在这个示例中,我们定义了一个 print() 函数,它接受一个整数参数 n,并输出 n 行文本。在 main() 函数中,我们创建了两个线程 t1t2,它们分别执行 print(3)print(5)。然后我们调用 join() 方法来等待两个线程结束。

这段代码的一个可能的输出结果是:

Hello from thread 1
Hello from thread 1
Hello from thread 1
Hello from thread 2
Hello from thread 2
Hello from thread 2
Hello from thread 2
Hello from thread 2

或者

Hello from thread 2
Hello from thread 2
Hello from thread 2
Hello from thread 2
Hello from thread 2
Hello from thread 1
Hello from thread 1
Hello from thread 1

具体的输出顺序取决于线程的调度顺序,这是不确定的

相关文章
|
前端开发 安全 JavaScript
构建高效Web应用的五个关键步骤
【9月更文挑战第21天】本文将引导读者通过五个核心步骤来构建一个高效的Web应用。我们将从选择合适的技术栈开始,到实现响应式设计、优化性能、保证安全性,最后确保可维护性和扩展性。每个步骤都配备了具体的代码示例,帮助理解如何在实践中应用这些概念。
164 10
|
缓存 监控 数据格式
信息系统架构模型(2) SOA
信息系统架构模型(2) SOA
312 0
|
人工智能 大数据 Apache
Flink Forward Asia 2024 即将盛大开幕!
Flink Forward Asia 2024是由Apache官方授权的技术大会,聚焦流式湖仓、流批一体、AI大模型等热点方向,旨在分享Flink社区最新动态及实践经验,是Flink开发者和使用者不容错过的盛会。大会不仅探讨了Flink在实时大数据分析中的应用,还深入讨论了Data+AI领域的新成果,如基于Flink和Elasticsearch的企业级高级RAG架构设计,展示了Flink在多模态数据处理、实时数据向量化等方面的强大能力。
|
JavaScript 中间件 Python
Django如何配置解决CORS问题
Django如何配置解决CORS问题
402 0
|
前端开发 JavaScript API
掌握React表单管理的高级技巧:探索Hooks和Context API如何协同工作以简化状态管理与组件通信
【8月更文挑战第31天】在React中管理复杂的表单状态曾是一大挑战,传统上我们可能会依赖如Redux等状态管理库。然而,React Hooks和Context API的引入提供了一种更简洁高效的解决方案。本文将详细介绍如何利用Hooks和Context API来优化React应用中的表单状态管理,通过自定义Hook `useForm` 和 `FormContext` 实现状态的轻松共享与更新,使代码更清晰且易于维护,为开发者带来更高效的开发体验。
159 0
|
资源调度 数据可视化
用二元泊松模型预测2022年世界杯淘汰赛结果
双泊松模型有一个严重的缺陷,那就是它假设比赛中两队的比分是条件独立的。而我们都知道,在对抗性比赛中,两队的比分是存在关联的,双泊松模型可以描述比分的这种关联性,提高了比赛结果预测的准确度。
977 1
用二元泊松模型预测2022年世界杯淘汰赛结果
|
区块链 vr&ar 人工智能
元宇宙链游系统开发(逻辑开发)丨链游系统开发(详细分析)
元宇宙是融合多种技术的新型互联网应用和社会形态,结合扩展现实、数字孪生及区块链,创造虚实相融的体验。清华大学沈阳教授认为它是互联网和区块链行业的热点,由NFT和GameFi推动发展。元宇宙涉及网络算力、人工智能、电子游戏、显示技术和区块链等五大技术领域。目前的区块链元宇宙项目多处于初级阶段,各项目间资产不通用。随着技术进步和基础设施成熟,如公链、DeFi、NFT和新科技落地,元宇宙将迎来快速发展,虚拟资产的增长潜力巨大。
|
设计模式 Arthas Java
面向切面编程(AOP)与代理模式的关系
面向切面编程(AOP)与代理模式的关系
|
Linux 开发工具
Linux配置网卡
Linux配置网卡
473 0