C#多线程学习(一) 多线程的相关概念

这篇具有很好参考价值的文章主要介绍了C#多线程学习(一) 多线程的相关概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C#多线程学习(一) 多线程的相关概念

什么是进程?

当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。

而一个进程又是由多个线程所组成的。

什么是线程?

线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),

但代码区是共享的,即不同的线程可以执行同样的函数。

什么是多线程?

多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行

不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

多线程的好处:

可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它

的线程而不是等待,这样就大大提高了程序的效率。

多线程的不利方面:

线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;

多线程需要协调和管理,所以需要CPU时间跟踪线程;

线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;

线程太多会导致控制太复杂,最终可能造成很多Bug;

接下来将对C#编程中的多线程机制进行探讨。为了省去创建GUI那些繁琐的步骤,更清晰地逼近线程的本质,接下来的所有程序都是控制台程序,程序最后的Console.ReadLine()是为了使程序中途停下来,以便看清楚执行过程中的输出。

任何程序在执行时,至少有一个主线程。
一个直观印象的线程示例:

//SystemThread.cs
using System;
using System.Threading;
namespace ThreadTest
{
	class RunIt
	{
	[STAThread]
	static void Main(string[] args)
	{
		Thread.CurrentThread.Name="System Thread";//给当前线程起名为"System Thread"
		Console.WriteLine(Thread.CurrentThread.Name+"Status:"+Thread.CurrentThread.ThreadState);
		Console.ReadLine();
	}
	}
}

输出如下:

System Thread's Status:Running

在这里,我们通过Thread类的静态属性CurrentThread获取了当前执行的线程,对其Name属性赋值“System Thread”,最后还输出了它的当前状态(ThreadState)。
所谓静态属性,就是这个类所有对象所公有的属性,不管你创建了多少个这个类的实例,但是类的静态属性在内存中只有一个。很容易理解CurrentThread为什么是静态的——虽然有多个线程同时存在,但是在某一个时刻,CPU只能执行其中一个。
在程序的头部,我们使用了如下命名空间:
using System;
using System.Threading;
.net framework class library中,所有与多线程机制应用相关的类都是放在System.Threading命名空间中的。如果你想在你的应用程序中使用多线程,就必须包含这个类。
我们通过其中提供的Thread类来创建和控制线程,ThreadPool类用于管理线程池等。(此外还提供解决了线程执行安排,死锁,线程间通讯等实际问题的机制。)

Thread类有几个至关重要的方法,描述如下:

Start():启动线程;
Sleep(int):静态方法,暂停当前线程指定的毫秒数;
Abort():通常使用该方法来终止一个线程;
Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复;
Resume():恢复被Suspend()方法挂起的线程的执行;文章来源地址https://www.toymoban.com/news/detail-412414.html

到了这里,关于C#多线程学习(一) 多线程的相关概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析

    学习多线程的时候,需要了解CPU和线程的相关概念,但是网上给出的概念让我实际操作时产生了混淆。 本文与其他文章不一样的点在于,解释为什么逻辑CPU数不是核数的2倍(比较新的处理器会有这种情况),能够解答非计算机专业人士的问题。 CPU信息的查询方法参见本文第

    2024年02月13日
    浏览(36)
  • c#多线程—基础概念到“双色球”项目实现(附知识点目录、代码、视频)

    总结:视频中对于多线程讲的非常透彻,从线程基础概念—.net不同版本出现的线程方法—多线程常出现问题—双色球项目实践,每个知识点都有代码实操,受益匪浅。附上学习笔记和实操代码。 视频 线程:程序执行的最小单位,任何操作都是由线程完成的,使用同步时,资

    2024年02月11日
    浏览(52)
  • 【Linux学习】多线程——页表详解 | 线程概念 | 线程理解

    🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言: 你只管努力,剩下的交给时间! 我们在之前一直都提到页表,知道它的作用是将虚拟地址映射到物理地址,但是它具体怎么映射的,它的结构是什么样的,并没有提及过。 上诉代码,会在运行时报错,原因是str指向

    2024年02月05日
    浏览(40)
  • 边缘计算相关概念--学习笔记

    一.边缘计算概念 边缘计算将数据的处理,应用程序的运行甚至一些功能服务的实现,由网络中心下放到网络边缘的节点上,在网络边缘侧的智能网关上就近采集并且处理数据,不需要将大量未处理的数据上传到远程的大数据平台。边缘计算理论上可以满足许多行业在敏捷性

    2024年02月11日
    浏览(39)
  • 线程休眠、线程让步、线程优先级相关内容学习笔记

        1、线程休眠     (1)sleep()             如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态(Timed_Waiting),则可以通过调用Thread类的静态sleep()方法来实现。             static void sleep(long millis):让当前正在执行的线程暂停millis毫秒,并进入阻塞状态,该方

    2024年02月03日
    浏览(49)
  • 云计算技术相关概念--学习笔记

    一.云计算相关概念 云计算是同时描述一个系统平台或者一类应用程序的术语。云计算平台按需进行动态部署,配置,重新配置预计取消服务等。在云计算平台中的服务器可以是物理或虚拟的服务器。高级的计算机云通常包含一些其他的计算资源,如存储区域网络,网络设备

    2024年02月10日
    浏览(40)
  • 深度学习相关知识点概念

    卷积神经网络(Convolutional Neural Network,CNN) 是一种专门用于处理和分析具有网格结构数据的人工神经网络。CNN主要应用于计算机视觉领域,用于图像识别、物体检测、图像分割等任务。 CNN的设计受到了生物视觉系统的启发,其主要特点是在网络中引入了卷积层(convolutiona

    2024年04月16日
    浏览(47)
  • python机器学习——机器学习相关概念 & 特征工程

    监督学习:输入数据有特征有标签,即有标准答案 分类:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络 回归:线性回归、岭回归 标注:隐马尔可夫模型 (不做要求) 无监督学习:输入数据有特征无标签,即无标准答案 聚类:k-means 特征工程是将原始数据

    2024年02月11日
    浏览(49)
  • 机器学习的第一节基本概念的相关学习

    目录 1.1 决策树的概念 1.2 KNN的概念 1.2.1KNN的基本原理 1.2.2 流程: 1.2.3 优缺点 1.3 深度学习 1.4 梯度下降 损失函数 1.5 特征与特征选择 特征选择的目的 1.6 python中dot函数总结 一维数组的点积: 二维数组(矩阵)的乘法: 多维数组的乘法: 1.7  suffler   打乱 1.8 特征和标签 1

    2024年02月10日
    浏览(47)
  • 李沐《动手学深度学习》多层感知机 深度学习相关概念

    李沐《动手学深度学习》预备知识 张量操作及数据处理 李沐《动手学深度学习》预备知识 线性代数及微积分 李沐《动手学深度学习》线性神经网络 线性回归 李沐《动手学深度学习》线性神经网络 softmax回归 李沐《动手学深度学习》多层感知机 模型概念和代码实现 教材:

    2024年01月20日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包