C#知识点-18(多线程、同步、异步编程)

本文详细阐述了多线程的概念,包括单线程和多线程的区别,以及并发和并行的定义。讨论了同步与异步的概念,重点介绍了多线程同步的重要性。还讲解了并发的三大特性——可见性、原子性和有序性,以及死锁的四个条件。最后提到了线程池和两种异步编程模型(EAP和TPL)。
摘要由CSDN通过智能技术生成

多线程

进程:一般指程序中运行的程序,实际作用是为程序再执行过程中创建好所需的环境和资源。
线程:是进程的一个实体,是cpu用来调度执行程序的最小单元,一个进程可以拥有多个线程。

单线程:进程中只有一个线程,只执行一个线程。
多线程:同一时刻,可以执行多个线程

并发:一段时间内,同时做多件事情
并发是同一时刻,只执行一个线程。但是多个线程被快速的交替执行,使得再宏观上有了多线程同时执行的假效果。但是在微观上不是同时执行的,只是把时间分成若干段,使得多个线程快速的交替执行。
并行:同一时刻,做多件事情
指同一时刻,有多个线程再多个处理器上同时执行,无论从宏观还是微观来看,这些线程都是一起执行的。

那么多线程到底是并发还是并行呢?
单处理器下,多线程一定是并发执行的。
多处理器下,当线程个数小于或等于处理器个数时,多线程是并行的;当线程个数大于或等于处理器个数时,多线程是并发和并行都可能执行

同步与异步:
同步:等待前一个任务结束后,再执行下一个任务,无并发或者并行概念
异步:多个任务,同时执行

多线程同步:
当有一个线程对内存某一块地址操作时,不允许其他线程对这个内存地址进行操作,直到该线程操作完成。
应用:在使用多线程开发的过程中,一些敏感的重要的数据不允许多个线程同时访问,此时就需要多线程同步技术,保证数据在任何时刻,最多有一个线程访问。

并发三大特性:
可见性:当多个线程访问同一个变量时,一个线程修改了这个变量值,其他线程能够立即看到修改后的值。
原子性:即一个操作或者多个操作,要么全部执行(执行的过程中不被任何因素打断),要么就都不执行
有序性:即程序的执行按照代码的先后顺序执行。

死锁:
互斥性:当一个资源被线程使用的时候,别的线程不能使用。
不可抢占性:资源请求者不可强制从资源拥有者中抢夺资源。
占有且等待性:资源请求者在等待其他资源时,保持对原有资源的占有。
循环等待性:线程1等待线程2占有的资源,线程2等待线程1占有的资源。

线程池:线程池就是存储线程的池子,里面是一组已经创建好的线程,随用随取,用完了不销毁,供给后续使用。

异步编程模型

EAP:基于事件的异步模型
TPL:基于任务(Task)的异步编程模型
APM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值