C#线程基础知识

C#进程,线程基础知识 介绍C#进程与线程的基础知识 阅读详情

多线程和多进程的区别:

任务管理器里各种不同的进程就是多进程,或者是你同时运行多个”.exe’程序就可以理解为多进程,多进程是要更多消耗CPU资源的。

多线程是相对于进程里更小的单位,比如3个线程在1个进程里进行不同的操作,他们所拥有的资源就是那个进程里的资源,不会占用更多资源,只是通过线程更合理的分配资源。

 

运行一个控制台项目.exe,就会生成一个进程,在此进程中会生成一条主线程(主要负责执行Main函数中的代码);

 

什么是进程?

进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。

一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。

 

什么是线程?

线程是操作系统分配处理器时间的基本单元,也是一个独立的运行单 元,每个进程内部都有多个线程,每个线程都可以各自同时执行指令。每个线程都有自己独立的栈,但是与进程内的其他线程共享内存。但是对于.NET的客户端程序(Console,WPF,WinForms)是由CLR创建的单线程(主线程,且只创建一个线程)来启动。在该线程上可以创建其他线程。

 

Thread类:

构造函数:

Thread(ThreadStart method)  无参无返回值类型的方法

Thread(ParameterizedThreadStart method) 无返回值类型,有一个object参数的方法

属性:

static CurrentThread 返回当前正在运行的线程

Name 设置/返回线程的名字

IsBackground 是否是后台线程

Priority 设置优先级的

方法:

Start() 启动线程,调用无参无返回值的函数

Start(Object pram) 启动线程,pram传参给有参数的方法; 

Sleep(int 毫秒) 让线程休眠,处于暂停执行的状态

Abort() 终止线程

Join(int 毫秒) 挂起(暂停)正在调度的线程,直到被调度的线程执行完毕后,该线程才继续执行

 

线程优先级

系统优先执行优先级较高的线程

但这只意味着优先级较高的线程占有更多的CPU时间

并不意味着一定要先执行完优先级较高的线程,才会执行优先级较低的线程。

 

 

同步锁:

lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。

 lock 关键字在块的开始处调用 Enter,而在块的结尾处调用 Exit。

 

 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。 

 

打个比方,有这样一个情景,很多公司所在的大厦的厕所的蹲位都是小单间型的,也就是一次只能进去一个人,那么为了避免每次进去一个 人,那怎么做呢?不就是一个人进去之后顺手把门锁上么?这样你在里面干啥事,外边的人也只能等待你解放完了,才能进入。而蹲位的资源(蹲位,手纸等)是共享的。

常用的锁的格式如下:

private static readOnly Object lockObj=new Object(); 

public void Fun(){
lock(lockObj){
//执行代码
}
}

 

关于C#多线程的函数示例 用c#实现的 多线程小例子 不带参数/带参数的多线程函数示例 立即下载

相关推荐

C#多线程基础知识资料合辑(基础部分)

本资料为C#多线程基础知识资料合辑(基础部分)

C# 多线程详细讲解

C#多线程 一、基本概念 1、进程 首先打开任务管理器,查看当前运行的进程: 从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢? 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。 线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式), 一个进程运

fenglearning的博客 2万+

主流算力卡性能对比分析

超大规模AI训练/HPC:优先选择NVIDIA H100或AMD MI300X,需关注显存带宽和多卡互联能力。企业级AI训练:NVIDIA A100性价比更高,生态成熟。国内自主可控需求:华为昇腾910B是首选,支持液冷和低功耗设计。本地AI推理/游戏:NVIDIA RTX 4090或RTX 5090性价比突出,但需注意显存容量限制。边缘计算/低功耗场景:华为昇腾310或清微智能TX536(能效比6.3TOPS/W@INT8)更合适。

m0_69867914的博客 7805

c#多线程实现函数同步运行

(转载请注明出处:http://blog.youkuaiyun.com/buptgshengod)       方法比较笨,以后加深了解再改进吧。       我们假设有方法run1()和run2(),耗时都比较大,实现他们同步运行将大大提高程序的效率,在这里考虑使用多线程的方法。       首先添加引用,定义bool型i,j为false。 using System.Threading;

Garvin的专栏 3793

超详细流式细胞术全流程解析:从样本制备到结果分析全攻略

流式细胞术(Flow Cytometry)是现代生物学和医学研究中不可或缺的高通量分析技术,可实现对细胞表型、功能状态、细胞周期等多维度参数的快速检测。本文将从实验全流程出发,详解样本制备、上机操作、参数设置及结果处理的核心要点,帮助科研人员精准掌握流式实验关键技术。

good_rrrrr的博客 3868

433MHz无线通信避坑指南:如何解决信号干扰和误码问题

本文深入探讨433MHz无线通信中的信号干扰和误码问题,提供从射频前端设计到协议优化的全链路解决方案。通过天线匹配、电源噪声抑制、曼彻斯特编码改进及实时频点切换等技术,显著提升通信稳定性和距离。适合智能家居和工业无线控制系统的开发者参考。

weixin_29288313的博客 419

C#基础-多线程

闲得蛋疼,整理一下C#线程的基础概念和常规用法。

SchuylerEX的博客 1万+

泄露测试仪CTS的Sentinel I28使用

本文介绍:泄露测试仪CTS的Sentinel I28使用

qq_34047402的博客 2205

C#多线程 - 创建线程

C# 在 4.0 以后一共有3种创建线程的方式: 1.Thread 自己创建的独立的线程, 优先级高,需要使用者自己管理。 2.ThreadPool 有 .Net 自己管理, 只需要把需要处理的方法写好, 然后交个.Net Framework, 后续只要方法执行完毕, 则自动退出。 3.Task 是4.0 以后新增的线程操作方式, 类似 ThreadPool, 但效率测试比Thread...

道可盗经常盗 805

STRING数据库的蛋白质相互作用(PPI)网络分析

在转录调控相关的文献中,我们经常能够看到这样的蛋白质相互作用网络(protein protein interaction network,PPI network)。具体而言,这些相关的文献中首先通过RNA-seq、表达谱芯片或者蛋白质组分析等,找到了在不同分组样本间一系列的差异表达基因或蛋白。

weixin_43029125的博客 9458

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 274

C#线程函数调用方式

C#中线创建线程调用线程函数有2种方式: 1,调用不带参数的线程函数 2,调用带参数的线程函数         在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数。执行函数声明格式如下: public static void ThreadProc(); 如果希望传递参数给执行函数,则使用ParameterizedThreadStart代理来链接执行函

wzg_soullon的专栏 2863

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

Michaelis–Menten 曲线 米氏曲线 纵坐标 反应速率求值 朗伯比尔定律

weixin_42809675的博客 2万+

C#中的多线程 - 基础知识

来源: C#中的多线程 - 基础知识 简介及概念 C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行。 一个 C# 客户端程序(Console 命令行、WPF 以及 Windows Forms)开始于一个单线程,这个线程(也称为“主线程”)是由 CLR 和操作系统自动创建的,并且也可以再创建其它线程。以下是一个简单的使用多线程的例子: 所有示例都假...

weixin_30515513的博客 128

即插即用系列(代码实践) | WACV 2024 CSAM:面向各向异性医学图像分割的 2.5D 跨切片注意力模块

文章摘要: 论文《CSAM: A 2.5D Cross-Slice Attention Module for Anisotropic Volumetric Medical Image Segmentation》提出了一种解决医学图像各向异性问题的创新模块CSAM。针对MRI/CT数据中切片间分辨率差异大的挑战,该模块通过2.5D跨切片注意力机制,结合2D卷积的轻量性和3D上下文感知能力。核心包括语义注意力(通道级)、位置注意力(空间级)和跨切片注意力(支持不确定性建模),能在几乎不增加参数量的情况下有效捕捉

分享顶会顶刊论文即插即用模块 106

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

c# 多线程 执行事件 并发_C# 基础知识系列- 12 任务和多线程

0. 前言 照例一份前言,在介绍任务和多线程之前,先介绍一下异步和同步的概念。我们之间介绍的知识点都是在同步执行,所谓的同步就是一行代码一行代码的执行,就像是我们日常乘坐地铁通过安检通道一样,想象我们每个人都是一行代码,我们依次通过安检仪器的时候就是同步。 那么,什么是异步呢?有一个时间利用率的故事,讲的是在烧水的同时,顺便准备茶叶,清洗茶杯等工序可以节省时间。这个故事就是异步的一个典型范例。异步...

weixin_39587010的博客 307

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# 多线程编程的基础知识和常用的线程同步方式

多线程编程是现代软件开发中非常重要的一个方向,C# 作为一门现代化的编程语言,提供了丰富的多线程编程支持。下面我们来介绍一下 C# 多线程编程的基础知识和常用的线程同步方式。

無限進步的全棧遊戲開發的博客 976

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C#多线程基础知识

程序在服务器上运行,占据的计算资源集合,称之为进程。进程之间不会相互干扰。进程间通信比较困难程序执行的最小单位,也有自己的计算资源线程是属于进程,一个进程可以有多个线程一个进程里面,有多个线程并发执行Thread是一个封装类,是NetFramework对线程对象的抽象封装通过Thread去完成的操作,最终是通过向操作系统请求得到的执行流。

Tiger_shl的博客 368

C#多线程,基础知识很重要

本文通过介绍C#多线程的用法(基础玩法),附加介绍一下WinForm里边跨线程访问UI的方法 如图,就是这么一个简单的界面,每个按钮下面一个方法,分别设置文本框里边的内容,那么,开始吧! 先介绍一下WinForm的线程模型:WinForm 是通过调用Windows API 的GetMessage Or PeekMeeage来处理其他线程发送过来的消息,这些消息存储在系统的一个消息队列中,创...

weixin_30387799的博客 159

C#多线程1-基础知识

最近在研究C#多线程程序优化,看了一些资料,其中这篇资料讲的很不错,特地转载过来分享。 原文地址:https://blog.gkarch.com/threading/part1.html 1. 简介及概念 C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行。 一个 C# 客户端程序(Console 命令行、WPF 以及 Windows Forms)开始于一个单线程,这个线程(也称为“主线程”)是由 CLR 和操作系统自动创建的,并且也可以...

All_Rights_Reserved的博客 569

C#线程的基础知识

线程的创建 1、ThreadStart委托的使用 Thread th1 = new Thread(MyThread.ThreadMethod); MyThread obj = new MyThread(); Thread th2 = new Thread(new ThreadStart(obj.ThreadMethod)); 2、线程的启动、暂停和提前中止 Thread.St...

技术专栏 2587

C#基础知识学习之 ☀️ | 多线程的使用基础

C#多线程 多线程概念 线程在程序中经常被用到,现在的计算机都是可以异步执行很多操作的,所以多线程的作用可见一斑! 线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。 线程是轻量级进程。一个使用线程的常见实例是现代操作系统中并行编程的实现。使用线程节省了 CPU 周期的浪费,同时提高了应用程序的效率。 到目前为止我们编写的程序是一个单线程作为应用程序的运行实例的单一的过程运行的。 但是,这

努力前行,总会成为自己心中的那道光 2317
上一篇: C#封装Directory.Move()方法
下一篇: C#Socket通信
zhong_0419
博客等级 码龄8年 30粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值