进程 Process
包含多个线程 Thread
指令:方法(委托)
数据:相关对象
Thread 属性
- CurrentPrincipal 当前线程安全性
- CurrentThread
- IsAlive
- IsBackground
- Name
- Priority 线程优先级
- ThreadState 当前状态
1 | using System; |
Thread 方法
- Abort 撤销
- Interrupt 中断
- Join 等待
- Resume 恢复
- Sleep
- Start
- Suspend 挂起
ThreadState Enume
- Aborted
- AbortedRequested
- Background
- Running
- Stopped
- StopRequested
- Suspended
- SuspendRequested
- Unstarted
- WaitSleepJoin
ThreadPriority
- Highest
- AboveNormal
- Normal
- BelowNormal
- Lowest
线程同步
Join()
1 | public class ThreadJoin { |
多线程访问同变量
Lock(对象,表达式){
…
}
System.Threading.Monitor.Enter(对象,表达式);
System.Threading.Monitor.Exit(对象,表达式);
线程池
Threadpool.QueueUserWorkItem(WaitCallback, object)
Timer(TimerCallback callback, //执行的任务
object state, //数据
int dueTime, //启动前的延时
int period //任务间隔
)
线程安全
IsSynchoronized() 判断是否为同步
SyncRoot()
Synchronized()
1 | using System; |
并行编程
TPL 并行任务库
Task 类,利用线程池进行任务执行
Parallel 类,并行执行任务类的实用类,隐式的使用Task
使用方法:
Task
double res = task.Result;
Task.WaitAll
task.ContinueWith
1 | using System; |
异常处理:AggregateExecption(合并的异常)
使用方法:
Parallel.Invoke(Action[] actions)
Parallel.For(0, 100, i=>{})
Parallel.FOrEach(list, item=>{})
1 | using System; |
1 | using System; |
Linq,PLinq
使用方法:
使用Linq语法,集合.AsParallel()
1 | using System; |
异步编程
asynchronize
主要解决的事情:
等待一些耗时的任务,不阻塞当前任务
异步提高UI响应能力
- 方法一 委托
1 | using System; |
- 方法二 回调
1 | using System; |
- 方法三 await async
await 等待任务执行
async 修饰符,内部存在异步任务
1 | using System; |
1 | using System; |