《C#多线程编程实战(原书第2版)》——第1章 线 程 基 础 1.1 简介

简介:

本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第1章,第1.1节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第1章

线 程 基 础

本章将涵盖C#中使用线程的基本操作。

你将学到以下内容:

使用C#创建线程

暂停线程

线程等待

终止线程

检测线程状态

线程优先级

前台线程和后台线程

向线程传参

使用C#中的lock关键字

使用Monitor类锁定资源

处理异常

1.1 简介

过去普通计算机只有一个计算单元,不能同时执行多个计算任务。然而操作系统却已经可以同时运行多个应用程序,即实现了多任务的概念。为了防止一个应用程序控制CPU而导致其他应用程序和操作系统本身永远被挂起这一可能情况,操作系统不得不使用某种方式将物理计算单元分割为一些虚拟的进程,并给予每个执行程序一定量的计算能力。此外,操作系统必须始终能够优先访问CPU,并能调整不同程序访问CPU的优先级。线程正是这一概念的实现。可以认为线程是一个虚拟进程,用于独立运行一个特定的程序。

请记住线程会消耗大量的操作系统资源。多个线程共享一个物理处理器将导致操作系统忙于管理这些线程,而无法运行程序。

因此,虽然有可能提高计算机的处理器能力,使得计算机每秒钟能执行越来越多的命令,但是使用线程通常是一个操作系统任务,试图在单核CPU上并行执行计算任务是没有意义的,因为这比顺序运行会花费更多的时间。然而,当处理器拥有多核时,过去的应用程序则不能使用这个优势,因为它们只使用了一个处理核心。

为了有效地利用现代处理器的计算能力,使用某种方式让程序能使用不止一个处理核心是非常重要的。这需要组织多个线程间的通信和相互同步。

本章中的内容将关注于使用C#语言执行一些非常基本的线程操作。我们将介绍线程的生命周期,其包括创建线程、挂起线程、线程等待,以及中止线程。然后我们会介绍一些基本的线程同步技术。

相关文章
|
1月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
1月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
1月前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
|
1月前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
|
1月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
1月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
105 3
|
6月前
|
C#
C#线程锁
C#线程锁
20 1
|
6月前
|
开发框架 Java .NET
C# 多线程编程二
C# 多线程编程二
56 0
|
4月前
|
IDE C# 开发工具
C# | 多线程批量下载文件(创建N个线程同时批量下载文件,只需要几行代码而已)
批量下载文件时使用多线程可以有效缩短完成时间,本文将讲解如何使用C#+CodePlus扩展库快速完成多线程的文件下载。 大部分代码由IDE自动生成,需要我们自己编写的代码正好**10行**。也就是说,只需要10分钟,就可以手撸一个多线程的批量下载器。
87 0
C# | 多线程批量下载文件(创建N个线程同时批量下载文件,只需要几行代码而已)
|
1月前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍