《C++多线程编程实战》——第1章 C++概念和特性简介1.1 介绍

简介:

本节书摘来自异步社区出版社《C++多线程编程实战》一书中的第1章,第1.1节,作者: 【黑山共和国】Milos Ljumovic(米洛斯 留莫维奇),更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 C++概念和特性简介

C++多线程编程实战
本章介绍以下内容:

创建一个C++项目
程序结构、执行流、运行时对象
结构编程方法
理解面向对象编程方法
解释继承、重载和覆盖
理解多态
事件处理器和消息传递接口
链表、队列、栈示例

1.1 介绍

系统所执行的程序的进程或抽象是所有操作系统的核心概念。现在,绝大多数的操作系统在同一时间内都可以进行多项操作。例如,计算机在用户编辑Word文档时,还可以打印该文档、从硬盘缓冲区读数据、播放音乐等。在多任务操作系统中,中央处理单元(CPU)在程序中快速切换,执行每个程序只需几毫秒。

从严格意义上来说,对于单处理器系统,处理器在一个单元时间内只能执行一个进程。操作系统以极快的速度切换多个进程,营造了一个多进程同时运行的假象。与多处理器系统中硬件支持的真正并行相比,单处理器系统的这种并行叫伪并行(pseudoparallelism)更合适。

多线程(multithreading)是现代操作系统中非常重要的概念。多线程即允许执行多个线程,对完成并行任务和提升用户体验非常重要。

在传统的操作系统中,每个进程都有自己的地址空间和一个执行线程,该线程通常叫主线程(primary thread)。一般而言,运行在同一个进程中的多个线程具有相同的地址空间(即进程的地址空间),在准并行上下文中,这些线程就像是多个单独运行的进程,只不过它们的地址空间相同。

图标

伪并行是操作系统在单处理器环境下的特性。准并行地址空间概念是Windows操作系统的特性。在多处理器系统中,Windows为每个进程提供了一个虚拟地址空间,比真正的物理地址空间大得多,因此叫做准并行上下文。
线程(thread)是操作系统中的一个重要概念。线程对象包含一个程序计数器(负责处理在下一次线程获取处理器时间时要执行什么指令)、一组寄存器(储存线程正在操控的变量当前值)、一个栈(储存与函数调用和参数相关的数据),等等。虽然线程执行在进程的上下文中,但是它们的区别很大。进程非常贪婪,想占用所有的资源;而线程比较“友好”,它们彼此合作、交流,而且共享资源(如处理器时间、内存和变量等)。

相关文章
|
29天前
|
自然语言处理 编译器 C语言
【C++ 20 新特性】参数包初始化捕获的魅力 (“pack init-capture“ in C++20: A Deep Dive)
【C++ 20 新特性】参数包初始化捕获的魅力 (“pack init-capture“ in C++20: A Deep Dive)
38 0
|
12天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
37 6
|
14天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
29天前
|
Linux C++ iOS开发
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(二)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
251 2
|
29天前
|
Linux API C++
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南(一)
【C++ 17 新特性 文件管理】探索C++ Filesystem库:文件和目录操作的全面指南
312 2
|
25天前
|
存储 安全 编译器
【C++】类的六大默认成员函数及其特性(万字详解)
【C++】类的六大默认成员函数及其特性(万字详解)
35 3
|
28天前
|
算法 安全 编译器
【C++ 17 新特性 折叠表达式 fold expressions】理解学习 C++ 17 折叠表达式 的用法
【C++ 17 新特性 折叠表达式 fold expressions】理解学习 C++ 17 折叠表达式 的用法
23 1
|
28天前
|
Linux API C++
【C++ 线程包裹类设计】跨平台C++线程包装类:属性设置与平台差异的全面探讨
【C++ 线程包裹类设计】跨平台C++线程包装类:属性设置与平台差异的全面探讨
51 2
|
存储 算法 程序员
【C/C++ 线性表 简介】C/C++中的线性表探索:从标准库到自定义实现
【C/C++ 线性表 简介】C/C++中的线性表探索:从标准库到自定义实现
44 0
|
29天前
|
设计模式 存储 安全
【C++ 基本概念】C++编程三剑客:模板、多态与泛型编程的交织与差异
【C++ 基本概念】C++编程三剑客:模板、多态与泛型编程的交织与差异
104 0