AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C#
C#
级别 55
多线程入门
C# SELF
等级 55,
课时 0
在这节课里,你会了解 C# 和 .NET 的多线程基础:Thread 和进程的区别,如何用
Start()
和
Join()
启动新线程并等待它,为什么线程之间的共享内存有风险,以及什么是
race condition
、互相死锁和其他陷阱。简要回顾工具演进:从
System.Threading.Thread
到
Task
和
async
/
await
,并讨论多线程在实际中什么时候有用。
使用
Thread
类启动线程
C# SELF
等级 55,
课时 1
在这节课里你会动手体验在 .NET 里用手工方式做多线程:如何用
Thread
创建并启动线程,如何给它传参(通过 lambda 或
ParameterizedThreadStart
),如何管理线程的生命周期(
Start()
、
Join()
、
IsAlive
、
Name
、
CurrentThread
、
Sleep(...)
),还会看看常见错误并给出线程生命周期的图。会简单提到什么时候更适合用
Task
和
async
/
await
,但重点放在基础上。
线程的生命周期与管理
C# SELF
等级 55,
课时 2
我们来看看 .NET 中线程的生命周期:状态
Unstarted
/
Running
/
WaitSleepJoin
/
Stopped
、通过
Start()
启动、用
Join()
等待、用标志和
volatile
做正确的停止、处理后台线程(
IsBackground
)、检查状态(
IsAlive
)以及常见错误。配有代码示例和直观的图。
线程优先级和线程类型
C# SELF
等级 55,
课时 3
在这节讲座里我们会讲怎么在 .NET 里管理线程优先级:
Priority
属性在
Thread
上面和枚举
ThreadPriority
,什么时候以及为什么要改优先级,foreground 和 background 线程有什么区别,以及
IsBackground
怎么影响进程退出。还会聊到
ThreadPool
,它对于
Task
/
async/await
的作用,以及常见错误和实践建议。
Race Condition(竞态条件)
C# SELF
等级 55,
课时 4
什么是竞态条件,为什么它会出现并且为什么“只在某些时候”才会表现出来。我们用计数器自增和竞争操作来做直观的例子,看看时序图,讨论诊断方法和防止的基本思路:同步 (
lock
,
Monitor
), 原子操作 (
Interlocked
.
Increment
), 线程安全的集合。
Please enable JavaScript to continue using this application.