C++高性能并行编程与优化 - 课件 - 05 C++11 开始的多线程编程
C++11 开始的多线程编 程 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, 以上( GPU 专题) 温馨提示: 1. 会用到第二讲( RAII 与智能指针)里的知识 2. 课件中一部分代码是基于 C++17 的 个人认为, C++11 中很多特性, 其实可以看做是为了支持多线程而 顺带引入的……如 chrono 、移动 、 lambda 、 RAII…… 第 0 章:时间 C 语言如何处理时间: time.h • long t0 = time(NULL); //0 码力 | 79 页 | 14.11 MB | 1 年前3Java 应用与开发 - 线程编程
开销大。 2. 线程作为“轻量的进程”,同一类线程共享代码和数据空间,每个 线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 3. 多进程——在操作系统中能同时运行多个任务(程序)。 4. 多线程——在同一应用程序中有多个顺序流同时执行。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 线程和进程的区别和联系 代码 数据 进程空间 打开文件 寄存器 栈 线程 1 寄存器 据空间,每个 线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 3. 多进程——在操作系统中能同时运行多个任务(程序)。 4. 多线程——在同一应用程序中有多个顺序流同时执行。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 多核与多线程 ▶ 多核处理器是指在一个处理器上集成多个运算核心以提高并 行计算能力,每一个处理核心对应一个内核线程(Kernel Thread,KLT)。 内核线程是直接由操作系统内核支持的线程,由内核来完成 线程切换,内核通过操作调度器对线程进行调度,并负责将 线程的任务映射到各个处理器上。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 多核与多线程 一般一个处理核心对应一个内核线程,比如单核处理器对应一个 内核线程,双核处理器对应两个内核线程。 而现代计算机采用超线程技术将一个物理处理核心模拟成两个逻 辑处理核心对应两个内核线程,一般是双核四线程、四核八线0 码力 | 82 页 | 1010.73 KB | 1 年前3OpenShift Container Platform 4.7 安装
字符串 compute.hyperthread ing 是否在计算机器上启用或禁用并发多线 程或超 超线 线程 程。默认情况下,启用并发多 线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled compute.name 使用 compute 时需要此值。机器池的 名称。 worker (默认 值)。 字符串 controlPlane.hyperth reading 是否在 control plane 机器上启用或禁用 并发多线程或超 超线 线程 程。默认情况下,启 用并发多线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled controlPlane.name 使用 plane 池。 是否要启用或禁用并发多线程或超 超线 线程 程。默认情况下,启用并发多线程以提高机器内核的性能。您 可以通过将参数值设为 Disabled 来禁用。如果您在某些集群机器上禁用并发多线程,则必须在所有 集群机器上禁用。 重要 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 如果您对机器禁用并发多线程,请使用较大的实例类型,如 m4.2xlarge0 码力 | 2276 页 | 23.68 MB | 1 年前3OpenShift Container Platform 4.6 在vSphere 上安装
值)。 字符串 compute.hyperthread ing 是否在计算机器上启用或禁用并发多线 程或超线程。默认情况下,启用并发多 线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled compute.name 使用 compute 时需要此值。机器池的 名称。 worker amd64 (默认 值)。 字符串 controlPlane.hyperth reading 是否在 control plane 机器上启用或禁用 并发多线程或超线程。默认情况下,启 用并发多线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled controlPlane.name 使用 controlPlane control plane 池。 是否要启用或禁用并发多线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。您 可以通过将参数值设为 Disabled 来禁用。如果您在某些集群机器上禁用并发多线程,则必须在所有 集群机器上禁用。 重要 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 如果您禁用并发多线程,则计算机必须至少使用 8 个 CPU 和 32GB0 码力 | 204 页 | 2.26 MB | 1 年前3OpenShift Container Platform 4.8 安装
字符串 compute.hyperthrea ding 是否在计算机器上启用或禁用并发多线 程或超 超线 线程 程。默认情况下,启用并发多 线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled compute.name 使用 compute 时需要此值。机器池的 名称。 worker 上安装 上安装 71 controlPlane.hypert hreading 是否在 control plane 机器上启用或禁用 并发多线程或超 超线 线程 程。默认情况下,启 用并发多线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled controlPlane.name 使用 plane 池。 是否要启用或禁用并发多线程或超 超线 线程 程。默认情况下,启用并发多线程以提高机器内核的性能。您 可以通过将参数值设为 Disabled 来禁用。如果您在某些集群机器上禁用并发多线程,则必须在所有 集群机器上禁用。 重要 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 如果您对机器禁用并发多线程,请使用较大的实例类型,如 m4.2xlarge0 码力 | 2586 页 | 27.37 MB | 1 年前3python3学习手册
★第16章、多进程与多线程 ★多进程mul�processing.Process类 python多进程(mul�-process)适用于计算密集型的任务, 对于I/O密集型任务应该使用多线程(mul�-thread),比如磁盘读写, 网络通信等 在python中,对于计算密集型任务,多进程占优势;对于IO密集型任 务,多线程占优势。 使用多进程时,各进程拥有独立的内存空间,无法共享内存空间,所 "__main__": main() 单线程顺序执行耗时: 98.03768038749695 线程池并发执行耗时: 36.293702602386475 ★多线程threading.Thread类 python多线程(mul�-thread)适用于I/O密集型的任务, 对于计算密集型任务应该使用多进程(mul�-process) Python3有两个标准库 _thread 和 threading print(f'主线程结束时间:{time.strftime("%Y-%m-%d %H:%M:%S")}') if __name__ == "__main__": main() ★多线程同步之lock(互斥锁) 使用threading.Lock()方法创建一个互斥锁, 互斥锁在同一时刻只允许一个线程访问共享数据 import threading import random num0 码力 | 213 页 | 3.53 MB | 1 年前3Java 应用与开发 - Java 技术概述及开发环境
象的编程语言。 平台无关性 分布式 可靠性 多线程 网络编程 编译和解释并存 大纲 Java 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 Java 技术的特点 面向对象 平台无关性 分为源代码级(需重新编译源代码,如 C/C++) 和目标代码级 (Java) 平台无关。 分布式 可靠性 多线程 网络编程 编译和解释并存 大纲 Java 技术概述 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 Java 技术的特点 面向对象 平台无关性 分布式 可靠性 多线程 网络编程 编译和解释并存 大纲 Java 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 Java 技术的特点 面向对象 平台无关性 分布式 可靠性 不支持直接操作指针,避免了对内存的非法访问; 致的问题;解释器运行时实施检查,可发现数组和 字符串访问的越界;提供了异常处理机制。安全性。 多线程 网络编程 编译和解释并存 大纲 Java 技术概述 Java 平台核心机制 Java 开发环境 Java 基本开发流程 Java 技术的特点 面向对象 平台无关性 分布式 可靠性 多线程 C++ 没有内置的多线程机制,需调用操作系统的 多线程功能来进行多线程序设计;Java 提供了多线 程支持。 网络编程 编译和解释并存0 码力 | 33 页 | 1.17 MB | 1 年前3Python3 基础教程 - 廖雪峰
...................................... 267 Python3 基础教程【完整版】 http://www.yeayee.com/ 3/531 多线程 .................................................................................................. 这两类网络服务,而要同时服务多个用户就必须使用多进 程或多线程模型,这两种模型由 ForkingMixIn 和 ThreadingMixIn 提供。 通过组合,我们就可以创造出合适的服务来。 比如,编写一个多进程模式的 TCP 服务,定义如下: class MyTCPServer(TCPServer, ForkingMixIn): pass 编写一个多线程模式的 UDP 服务,定义如下: class 这种复杂的进程可以有多个线程,多个线程可以同时执行,多 线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快 速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当 然,真正地同时执行多线程需要多核 CPU 才可能实现。 我们前面编写的所有的 Python 程序,都是执行单任务的进程,也就是 只有一个线程。如果我们要同时执行多个任务怎么办? 有两种解决方案: 一种是启动多0 码力 | 531 页 | 5.15 MB | 1 年前3OpenShift Container Platform 4.10 安装
在 在 ALIBABA 上安装 上安装 93 compute.hyperthrea ding 是否在计算机器上启用或禁用并发多 线 线 程或超 程或超线 线程 程。默认情况下,启用并发 多线程以提高机器内核的性能。 重要 重要 如果您禁用并发多线 程,请确保您的容量规 划考虑机器性能显著降 低的情况。 enabled 或 Disabled compute.name 使用 compute (默认值)。 字符串 controlPlane.hypert hreading 是否在 control plane 机器上启用或禁用 并发多 线 线程或超 程或超线 线程 程。默认情况下, 启用并发多线程以提高机器内核的性 能。 重要 重要 如果您禁用并发多线 程,请确保您的容量规 划考虑机器性能显著降 低的情况。 enabled 或 Disabled controlPlane.name 使用 在 在 ALIBABA 上安装 上安装 115 compute.hyperthrea ding 是否在计算机器上启用或禁用并发多 线 线 程或超 程或超线 线程 程。默认情况下,启用并发 多线程以提高机器内核的性能。 重要 重要 如果您禁用并发多线 程,请确保您的容量规 划考虑机器性能显著降 低的情况。 enabled 或 Disabled compute.name 使用 compute0 码力 | 3142 页 | 33.42 MB | 1 年前3OpenShift Container Platform 4.6 在裸机上安装
300 Control plane RHCOS 4 16 GB 100 GB 300 Compute RHCOS 或 RHEL 7.9 2 8 GB 100 GB 300 1. 当未启用并发多线程(SMT)或超线程时,一个 CPU 相当于一个物理内核。启用后,使用以下公式 来计算对应的比率:(每个内核数的线程)LIMIT 插槽 = CPU。 2. OpenShift Container Platform 字符串 compute.hyperthread ing 是否在计算机器上启用或禁用并发多线 程或超 超线 线程 程。默认情况下,启用并发多 线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled compute.name 使用 compute 时需要此值。机器池的 名称。 worker (默认 值)。 字符串 controlPlane.hyperth reading 是否在 control plane 机器上启用或禁用 并发多线程或超 超线 线程 程。默认情况下,启 用并发多线程以提高机器内核的性能。 重要 重要 如果禁用并发多线程, 请确保在容量规划时考 虑到机器性能可能会显 著降低的问题。 Enabled 或 Disabled 参数 参数 描述 描述 值 值 OpenShift0 码力 | 160 页 | 1.70 MB | 1 年前3
共 231 条
- 1
- 2
- 3
- 4
- 5
- 6
- 24