多线程

一: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

 

posted @ 2020-10-04 00:39  net技术的爱好者  阅读(72)  评论(0)    收藏  举报