多线程
一:Thread
1.1 有参数和无参数:
1.2 常用属性:
Join():阻塞调用线程
二:线程同步
lock:
lock (obj) { dosomething... }
private static readonly
区分lock(this) lock(obj) lock(string) lock(static object)
参考链接:https://www.cnblogs.com/yuqilin/archive/2011/10/15/2213766.html
monitor:
Monitor.Enter(obj); Monitor.Exit(obj)
Mutex:
参考链接:https://www.cnblogs.com/wwj1992/p/5976096.html
三 跨线程访问:
Invoke:在“拥有控件的基础窗口句柄的线程”
四 task async/await
1.1 ThreadPool
1.2 task:
无返回值:
Task.Start();
Task.Factory.StartNew
Task.Run
有返回值 :task.Resut获取结果时会阻塞线程
Task.Start();
Task.Factory.StartNew<Type>
Task.Run<Type>
Task同步执行:task.RunSynchronously()
阻塞:
task.Wait()
Task.WaitAll(Task[] tasks)
Task.WaitAny(Task[] tasks)
执行后续操作:
task.WhenAll(Task[] tasks).ContinueWith
Task.Factory.ContinueWhenAll(Task[] tasks, Action continuationAction)
Task.Factory.ContinueWhenAny(Task[] tasks, Action continuationAction)
取消任务:
CancellationTokenSource ,source.CancelAfter(5000),source.Token.Register(Action action)
1.3 async/await
五 异步编程
1.1 并行编程: Parallel.For/ForEach/Invoke
1.2 定时器:Timer(TimeCallback callback,object state,uint dueTime, uint period)
1.3 委托执行异步:BeginIvoke EndInvoke
轮询:一直等待;回调
1.4 BackgroundWorker
六 定位cpu资源占用过高
工具:Windbg

浙公网安备 33010602011771号