好久没有更新了,今天来一篇,算是《同步与异步》系列的开篇吧,加油,坚持下去(PS:越来越懒了)。 一、Thread 利用Thread 可以直接创建和控制线程,在我的认知里它是最古老的技术了。因为out了、所以不再写例子了。二、ThreadPool由于线程的创建和销毁需要耗 ...
好久没有更新了,今天来一篇,算是《同步与异步》系列的开篇吧,加油,坚持下去(PS:越来越懒了)。
一、Thread
利用Thread 可以直接创建和控制get='_blank'>线程,在我的认知里它是最古老的技术了。因为out了、所以不再写例子了。
二、ThreadPool
由于线程的创建和销毁需要耗费大量的资源,为了提过性能、引入了线程池、即ThreadPool,ThreadPool 可隐式完成线程的创建和分配管理工作。
以下是来自MSDN的几句备注:
线程池根据需要提供新的工作线程或 I/O 完成线程,直到其达到每个类别的最小值。 当达到最小值时,线程池可以在该类别中创建更多线程或等待某些任务完成。 从 .NET Framework 4 开始,线程池会创建和销毁工作线程以优化吞吐量,吞吐量定义为单位时间内完成的任务数。 线程过少时可能无法更好地利用可用资源,但线程过多时又可能会加剧资源的争用情况。
直接应用 ThreadPool时、有两种应用场景:
1、将需要异步执行的方法、排入队列,当有可用线程时执行被排入队列的方法
// 该应用场景下 ThreadPool 提供如下两种形式的重载方法 // public static bool QueueUserWorkItem(WaitCallback callBack); // public static bool QueueUserWorkItem(WaitCallback callBack, object state); // WaitCallback 为 delegate, 一个object类型的入参,没有返回值。 // public delegate void WaitCallback(object state); base.SetTip(nameof(ThreadPool.QueueUserWorkItem)); ThreadPool.QueueUserWorkItem((state) => { this.SetTip("等待一秒"); Thread.Sleep(1000); this.SetTip("任务执行完毕"); });
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:.NET 实现并行的几种方式(一)
关键词:.NET
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。