《C++多线程编程实战》——第2章 进程和线程的概念2.1 简介

第2章 进程和线程的概念

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

进程和线程
解释进程模型
进程的实现
进程间通信(IPC)
解决典型的IPC问题
线程模型的实现
线程的用法
在用户空间实现线程
在内核实现线程

2.1 简介

现在的计算机能同时处理多件事,许多Windows用户还没有完全意识到这一点。我们举例说明一下。当启动PC系统时,许多进程都在后台启动(例如,管理电子邮件的进程、负责更新病毒库的进程等)。通常,用户在执行其他任务时(如,上网),还会打印文件或播放CD。这些活动都需要管理。支持多进程的多任务系统处理这些情况得心应手。在这种多任务系统中,CPU以极快的速度在各进程间切换,每个进程仅运行几毫秒。从严格意义上来说,CPU在任何时刻只运行一个进程,只不过它快速切换进程营造了并行处理的假象。

近些年来,操作系统演变为一个顺序的概念模型(顺序进程)。包括操作系统在内,所有的可运行软件都在计算机中表现为一系列顺序进程。进程是执行程序的实例。每个进程都有自己的虚拟地址空间和控制线程。线程是操作系统调度器(scheduler)分配处理器时间的基础单元。我们可以把系统看作是运行在准并行环境中的进程集合。在进程(程序)间快速地反复切换叫做多任务处理。

时间: 2024-08-15 21:01:01

《C++多线程编程实战》——第2章 进程和线程的概念2.1 简介的相关文章

《C++多线程编程实战》导读

前言 C++多线程编程实战多线程编程正逐渐成为IT行业和开发人员关注的焦点.开发商希望开发出用户友好.界面丰富,而且能并发执行的应用程序.强大的C++语言和本地Win32 API特性为多线程编程提供了良好开端.有了强大的C++,可以轻松地创建不同类型的应用程序,执行并行,而且还能优化现有的工作. 本书是一本实践为主.通俗易懂的Windows多线程编程指导.你将学到如何从多线程方案中受益,增强你的开发能力,构建更好的应用程序.本书不仅讲解了创建并行代码时遇到的问题,而且还帮助读者详细理解同步技术.

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

第1章 C++概念和特性简介 C++多线程编程实战 本章介绍以下内容: 创建一个C++项目 程序结构.执行流.运行时对象 结构编程方法 理解面向对象编程方法 解释继承.重载和覆盖 理解多态 事件处理器和消息传递接口 链表.队列.栈示例 1.1 介绍 系统所执行的程序的进程或抽象是所有操作系统的核心概念.现在,绝大多数的操作系统在同一时间内都可以进行多项操作.例如,计算机在用户编辑Word文档时,还可以打印该文档.从硬盘缓冲区读数据.播放音乐等.在多任务操作系统中,中央处理单元(CPU)在程序中快

《JAVA多线程编程实战指南》之Two-phase Termination(两阶段终止)模式

本文是<JAVA多线程编程实战指南>的样章,感谢作者授权并发网(ifeve.com)发表此文.感谢demochen整理此文. 5.1Two-phase Termination模式简介 停止线程是一个目标简单而实现却不那么简单的任务.首先,Java没有提供直接的API用于停止线程.此外,停止线程还有一些额外的细节需要考虑,如停止的线程处于阻塞(如等待锁)或者等待状态(等待其他线程),尚有未处理完的任务等. Two-phase Termination模式通过将停止线程这个动作分解为准备阶段和执行阶

《C#多线程编程实战(原书第2版)》——导读

前 言 不久前,典型的个人计算机的CPU还只有一个计算核心,并且功耗足以煎熟鸡蛋.2005年,英特尔推出了其首款多核心CPU,从此计算机开始向不同的方向发展.低耗电量及多个计算核心变得比提高行计算(row computing)的核心性能更重要.这也导致了编程范式的改变.现在我们需要学习如何有效地使用所有CPU核心来最优化性能,并同时通过在特定时间只运行需要的程序来节省电池电量.除此之外,我们在编写服务器端应用程序时需要有效地利用多个CPU核心,甚至多台计算机来支持尽可能多的用户. 为了创建这样的

Java多线程编程实战之不提倡的方法

不提倡使用的方法是为支持向后兼容性而保留的那些方法,它们在以后的版本中可能出现,也可能不出现.Java 多线程支持在版本 1.1 和版本 1.2 中做了重大修订,stop().suspend() 和 resume() 函数已不提倡使用.这些函数在 JVM 中可能引入微妙的错误.虽然函数名可能听起来很诱人,但请抵制诱惑不要使用它们. 调试线程化的程序 在线程化的程序中,可能发生的某些常见而讨厌的情况是死锁.活锁.内存损坏和资源耗尽. 死锁 死锁可能是多线程程序最常见的问题.当一个线程需要一个资源而

《C++多线程编程实战》——2.2 进程和线程

2.2 进程和线程 图2.1演示了执行4个程序调度的一个单核CPU多任务处理系统.图2.2演示了执行4个进程的一个多核CPU多任务处理系统,每个进程单独运行,各有一个控制流. 图2.1 单核CPU多任务处理系统 图2.2 多核CPU多任务处理系统 如图2.3所示,随着时间的推移,虽然进程有不同程度的进展,但是在每一时刻,单核CPU只运行一个进程. 图2.3 进程在单核CPU中的运行情况 前面提到过,在传统的操作系统中,每个进程都有一个地址空间和一个控制线程.在许多情况下,一个进程的地址空间中要执

《C++多线程编程实战》——2.10 在内核实现线程

2.10 在内核实现线程 整个内核就是一个进程,许多系统(内核)线程在其上下文中运行.内核有一个线程表,跟踪该系统中所有的线程. 内核维护这个传统的进程表以跟踪进程.那些可以阻塞线程的函数调用可作为系统调用执行,这比执行系统过程的代价更高.当线程被阻塞时,内核必须运行其他线程.当线程被毁坏时,则被标记为不可运行.但是,它的内核数据结构不会受到影响.然后在创建新的线程时,旧的线程将被再次激活,回收资源以备后用.当然,也可以回收用户级线程,但如果线程管理开销非常小,就没必要这样做. 准备就绪下面的示

《C++多线程编程实战》——2.5 进程间通信(IPC)

2.5 进程间通信(IPC) 进程之间的通信非常重要.虽然操作系统提供了进程间通信的机制,但是在介绍这些机制之前,我们先来考虑一些与之相关的问题.如果航空预定系统中有两个进程在同时销售本次航班的最后一张机票,怎么办?这里要解决两个问题.第1个问题是,一个座位不可能卖两次.第2个问题是一个依赖性问题:如果进程A生成的某些数据是进程B需要读取的(如,打印这些数据),那么进程B在进程A准备好这些数据之前必须一直等待.进程和线程的不同在于,线程共享同一个地址空间,而进程拥有单独的地址空间.因此,用线程解

《C#多线程编程实战(原书第2版)》——1.10 使用C#中的lock关键字

1.10 使用C#中的lock关键字 本节将描述如何确保当一个线程使用某些资源时,同时其他线程无法使用该资源.我们将了解该情况的必要性及整个线程安全概念都包含什么. 1.10.1 准备工作 为了学习本节,你需要安装Visual Studio 2015.除此之外无需其他准备.本节的源代码放置在BookSamplesChapter1Recipe9目录中. 1.10.2 实现方式 请执行以下步骤来了解如何使用C#中的lock关键字: 1.启动Visual Studio 2015.新建一个C#控制台应用