《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)是操作系统中的一个重要概念。线程对象包含一个程序计数器(负责处理在下一次线程获取处理器时间时要执行什么指令)、一组寄存器(储存线程正在操控的变量当前值)、一个栈(储存与函数调用和参数相关的数据),等等。虽然线程执行在进程的上下文中,但是它们的区别很大。进程非常贪婪,想占用所有的资源;而线程比较“友好”,它们彼此合作、交流,而且共享资源(如处理器时间、内存和变量等)。

相关文章
|
16天前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
3天前
|
存储 编译器 C++
【c++】多态(多态的概念及实现、虚函数重写、纯虚函数和抽象类、虚函数表、多态的实现过程)
本文介绍了面向对象编程中的多态特性,涵盖其概念、实现条件及原理。多态指“一个接口,多种实现”,通过基类指针或引用来调用不同派生类的重写虚函数,实现运行时多态。文中详细解释了虚函数、虚函数表(vtable)、纯虚函数与抽象类的概念,并通过代码示例展示了多态的具体应用。此外,还讨论了动态绑定和静态绑定的区别,帮助读者深入理解多态机制。最后总结了多态在编程中的重要性和应用场景。 文章结构清晰,从基础到深入,适合初学者和有一定基础的开发者学习。如果你觉得内容有帮助,请点赞支持。 ❤❤❤
59 0
|
4月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
401 52
|
5月前
|
编译器 程序员 定位技术
C++ 20新特性之Concepts
在C++ 20之前,我们在编写泛型代码时,模板参数的约束往往通过复杂的SFINAE(Substitution Failure Is Not An Error)策略或繁琐的Traits类来实现。这不仅难以阅读,也非常容易出错,导致很多程序员在提及泛型编程时,总是心有余悸、脊背发凉。 在没有引入Concepts之前,我们只能依靠经验和技巧来解读编译器给出的错误信息,很容易陷入“类型迷路”。这就好比在没有GPS导航的年代,我们依靠复杂的地图和模糊的方向指示去一个陌生的地点,很容易迷路。而Concepts的引入,就像是给C++的模板系统安装了一个GPS导航仪
186 59
|
3月前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
110 4
|
5月前
|
安全 程序员 编译器
【实战经验】17个C++编程常见错误及其解决方案
想必不少程序员都有类似的经历:辛苦敲完项目代码,内心满是对作品品质的自信,然而当静态扫描工具登场时,却揭示出诸多隐藏的警告问题。为了让自己的编程之路更加顺畅,也为了持续精进技艺,我想借此机会汇总分享那些常被我们无意间忽视却又导致警告的编程小细节,以此作为对未来的自我警示和提升。
786 14
|
4月前
|
安全 编译器 C++
【C++11】新特性
`C++11`是2011年发布的`C++`重要版本,引入了约140个新特性和600个缺陷修复。其中,列表初始化(List Initialization)提供了一种更统一、更灵活和更安全的初始化方式,支持内置类型和满足特定条件的自定义类型。此外,`C++11`还引入了`auto`关键字用于自动类型推导,简化了复杂类型的声明,提高了代码的可读性和可维护性。`decltype`则用于根据表达式推导类型,增强了编译时类型检查的能力,特别适用于模板和泛型编程。
37 2
|
4月前
|
缓存 安全 C++
C++无锁队列:解锁多线程编程新境界
【10月更文挑战第27天】
234 7
|
4月前
|
消息中间件 存储 安全
|
5月前
|
存储 编译器 C++
【C++】面向对象编程的三大特性:深入解析多态机制(三)
【C++】面向对象编程的三大特性:深入解析多态机制