C#高级 01.Net多线程

在这里插入图片描述

一.基本概念

1.什么是线程?

  • 线程是操作系统中能独立运行的最小单位,也是程序中能并发执行的一段指令序列
  • 线程是进程的一部分,一个进程可以包含多个线程,这些线程共享进程资源
  • 进程有线程入口,也可以创建更多的线程
    2.为什么要有多线程?
  • 批量重复任务希望同时进行(重复访问数组中的元素)
  • 多个不同任务希望同时进行,互不打扰(多个线程需要做轮询操作)
    3.什么是线程池?
  • 一组预设创建的线程,可以被重复使用来执行多个任务
  • 避免频繁的创建和销毁线程,减少线程创建和销毁开销,提高系统性能和效率
  • 异步编程默认使用线程池
    4.什么是线程安全?
  • 线程安全:多个线程访问共享资源时,对共享资源的访问会导致数据不一致或者不可预期的结果。
  • 同步机制:用于协调多个线程之间执行顺序和互斥访问共享资源,确保线程按照特定的顺序执行,避免竞态条件和数据不一致问题
  • 原子操作:执行过程中不会被中断的操作,只能完全执行和完全不执行,不存在中间状态;多线程环境下,原子操作能保证数据的一致性和可靠性。
    5.实现方式
  • 线程:thread
  • 线程池:threadpool
  • 异步编程: async await
  • 自带方法: Parallel(For、Foreach、Invoke)PLINQ(AsParallel、AsSequential、AsOrdered)

二:线程池

1.线程的创建

  • 创建Thread实例,并传入ThreadStart委托—>还可以配置线程,如是否为后台线程(Deamon = true)
  • 调用Thread.Start方法
    2.线程终止
  • 调用Thread.Join方法,等待线程结束
  • 调用Thread.Interrupt方法,终端线程执行
    3.线程的挂起与恢复
  • thread.Suspend以及Thread.Resume
  • 较新版本.NET中,这两个方法已经被标记为Obsolete,且调用会报错
  • 推荐使用锁、信号灯方式实现这一逻辑

三:线程安全与同步机制 Thread-Safety

  • 原子操作
  • 锁与信号量
    lock & Monitor
    Mutex
    Semaphore
    WaitHandle
    ManualResetEvent
    AutoResetEvent
    ReaderWriterLock
  • 轻量级
    SemaphoreSlim
    ManualResetEventSlim
    ReaderWriterLockSlim
  • 不要自己造轮子
    线程安全的单例:Lazy
    线程安全的集合类型:ConcurrentBag、ConcurrentStack、ConcurrentQueue、ConcurrentDictionary
    阻塞集合:BlockingCollection
    通道:Channel
    原子操作:Interlocked
    周期任务:PeriodicTimer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Zoom ZTP和AudioCodes Ltd桌面电话缺陷暴露,导致用户遭受窃听的动态情报

一、基本内容 近期SySS安全研究员发布分析报告显示,Zoom的零接触(ZTP)和AudioCodes Ltd桌面电话配置功能中发现高危漏洞,可以获得对设备的完全远程控制并不受限制的访问可以被武器化,以窃听房间或电话、通过设备并攻击…

华为鸿蒙(HarmonyOS)介绍

华为鸿蒙(HarmonyOS)介绍 华为鸿蒙(HarmonyOS)是一款由华为自主研发的操作系统,旨在为各种智能设备提供一种统一、高效、安全的解决方案。鸿蒙系统基于微内核架构,可以应用于多种类型的设备,鸿…

快速上手makefile自动化构建工具

makefile自动化构建工具 文章目录 makefile自动化构建工具 makefile背景 简单认识makefile 依赖关系与依赖方法 生成项目 清理项目 ACM时间 语法补充 .PHONY修饰 特殊符号替换 Makefile的推导过程 总结 前言: 在windows下,很多东西都是编译器直接帮你做…

docker学习笔记01-安装docker

1.Docker的概述 用Go语言实现的开源应用项目(container);克服操作系统的笨重;快速部署;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统;Docker通过隔离机制,每个容器间是互相隔离…

Kafka学习笔记1(千峰教育)

Kafka学习笔记1(千峰教育) 一、为什么使用消息队列1.使用同步的通信方式来解决多个服务之间的通信2.使用异步的通信方式 二、消息队列的流派1.有broker2.无broker 三、Kafka的基本知识1.Kafk2a的安装2.Kafka中的一些基本概念3.创建topic4.发送消息5.消费…

通过讯飞 API 接口用 Vue 实现实时语音转写

通过讯飞 API 接口用 Vue 实现实时语音转写 项目地址 前言 本项目中实时语音能够转写的最大时间为 60 s, 这个数据也是由 API 提供方给限制掉的 为什么我会需要这个点击按钮以后能够实现实时语音的转写呢,因为被课程所迫,选了这个方向就必…

百度每天20%新增代码由AI生成,Comate SaaS服务8000家客户 采纳率超40%

12月28日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京召开。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰现场公布了飞桨文心五载十届最新生态成果,文心一言最新用户规模破1亿,截…

Leetcode 763 划分字母区间

题意理解: 要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 输入&#xff…

【头歌实训】kafka-入门篇

文章目录 第1关:kafka - 初体验任务描述相关知识Kafka 简述Kafka 应用场景Kafka 架构组件kafka 常用命令 编程要求测试说明答案代码 第2关:生产者 (Producer ) - 简单模式任务描述相关知识Producer 简单模式Producer 的开发步骤Ka…

VS Code 运行 Python

介绍 Python: 是一种强大的编程语言,具有广泛的应用领域,可以用于开发 Web 应用、数据分析、人工智能、科学计算等多种领域。 VS Code: 是由微软开发的免费开源代码编辑器,可以在多个平台上运行。具有丰富的扩展功能…

每日一题--------求数字的每⼀位之和

大家好今天的每日一题又来了,有啥不对的请在评论区留言哦 文章目录 目录 文章目录 求数字的每⼀位之和 题⽬描述: 输⼊⼀个整数m,求这个整数m的每⼀位之和,并打印。 一、解题思路 我们可以通过不断获取该整数的个位数&#xff0c…

Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频

文章目录 相关链接运行环境前言计算机图形OpenCV简单使用图形读取文件读取可能会出现的问题:路径不对解决方案其它路径问题解决方案 图像显示保存OpenCV视频视频素材如何获取?简单视频读取 相关链接 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 …

python抽象基类之_subclasshook_方法

Python的鸭子特性(duck typing) Python中自定义的类只要实现了某种特殊的协议,就能赋予那种行为,举一个简单的例子: class A:def __len__(self):return 0 a A() print(len(a)) 如上所示,自己定义了一个类…

如何购买腾讯云的服务器(详解腾讯云服务器购买流程)

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是…

YOLOv5-Lite 树莓派4B 15帧教程

【前言】 由于v5Lite仓库遗漏了不少历史问题,最大的问题是毕业后卷起来了,找不到时间更新。 上面是这篇博客的背景,那么先说下结论,使用 v5lite-e 模型,在 树莓派4B(4G内存) 上,有三…

PyTorch 进阶指南,10个必须知道的原则

PyTorch 是一种流行的深度学习框架,它提供了强大的工具和灵活的接口,使得开发者能够搭建和训练各种神经网络模型。这份指南旨在为开发者提供一些有用的原则,以帮助他们在PyTorch中编写高效、可维护和可扩展的代码。 如果你对 Pytorch 还处于…

树莓派界面改成中文

安装完树莓派系统(Raspberry Pi OS with Desktop),第一次启动时,时会有如下面二个图所示,让你选择区域时区和语言。 树莓派默认的语言为英文,如果你在安装时没有选择的话,默认的区域为英国,语言为英国英文&…

Python新手上路:“用Python和Pygame创造你的流星雨”

文章目录 一、前言二、下载安装过程1.官网下载安装包2.安装python过程第一步第二步第三步第四步第五步安装完成 3.简单测试Python3.1 检查 Python 版本号3.2 打开 Python 解释器3.3 输入你的第一个代码3.4 运行 Python 脚本 4.安装Pygame4.1 cmd命令安装Pygame4.2 pip升级4.3 安…

【C语言】程序练习(二)

大家好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 目录 前言 一、运算符练习 1 算术运算符 1.1 练习题: 2 自加自减运算符 3 关系运…

Python列表数据处理全攻略(三):常用内置方法轻松掌握

文章目录 引言Python列表常用内置方法count()功能介绍语法示例注意事项 index()功能介绍语法示例注意事项: insert()功能介绍语法示例注意事项总结 结束语 引言 亲爱的读者,你好!Python的列表在数据结构中占据着核心地位,对于学习…