这块知识在日常开发中,非常重要.目前参与的项目需要进行数据的采集,涉及到很多多线程的知识。
特搜集一些博文供参考。
多线程、并行和异步编程学习笔记
C#多线程学习总结
C# 线程池ThreadPool的用法简析
5天玩转C#并行和多线程编程
Summary:
1.基于多核CPU的并发执行,由操作系统进行调度。
2.以资源换性能(cpu、内存、IO资源)
3.同步方法有序进行,异步多线程无序
启动无序:线程资源是向操作系统申请的,由操作系统的调度策略决定,所以启动顺序随机
同一个任务同一个线程,执行时间也不确定,CPU分片
以上相加,结束也无序
使用多线程请一定小心,很多事儿不是相当然的,尤其是多线程操作间有顺序要求的时候,
通过延迟一点启动来控制顺序?或者预计下结束顺序? 这些都不靠谱!
应用场景:
某个Task任务可以进行拆分为多个子Task,并且子Task的执行先后顺序,不影响最终的结果。
比如:
查询数据库/调用接口/读硬盘文件/做数据计算