• .Net进阶系列(10)-异步多线程综述(被替换)


    一. 综述

      经过两个多个周的整理,异步多线程章节终于整理完成,如下图所示,主要从基本概念、委托的异步调用、Thread多线程、ThreadPool多线程、Task、Parallel并行计算、async和await、线程特殊处理、委托赋值的几种形式等九个方面来介绍异步多线程。

    二. 基本概念的梳理

      1. 进程、线程和多线程

        进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源,而一个进程又是由多个线程组成。

               线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。

               多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

      2. 多线程的好处和弊端

        好处:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。(牺牲空间资源,来换取时间)

               弊端: 线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;(占内存多)

             多线程需要协调和管理,所以需要CPU时间跟踪线程; (占cpu多)

                线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;(多线程存在资源共享问题)

                          线程太多会导致控制太复杂,最终可能造成很多Bug。(管理麻烦,产生意外bug)

        3. 何时建议使用多线程

             1. 当主线程试图执行冗长的操作,但系统会卡界面,体验非常不好,这时候可以开辟一个新线程,来处理这项冗长的工作。

               2. 当请求别的数据库服务器、业务服务器等,可以开辟一个新线程,让主线程继续干别的事。

               3. 利用多线程拆分复杂运算,提高计算速度。

        4. 何时不建议使用多线程

         当单线程能很好解决,就不要为了使用多线程而用多线程。

        5. 同步方法和异步方法

                 同步方法:方法从上而下一次执行,一步一步执行,有先后顺序。

               

        异步方法:说白了,就是里面有开启了多个线程,主线程单独执行。

        

        6. 异步多线程的三个特点

       1 同步方法卡界面,原因是主线程被占用;异步方法不卡界面,原因是计算交给了别的线程,主线程空闲.

       2 同步方法慢,原因是只有一个线程计算;异步方法快,原因是多个线程同时计算,但是更消耗资源,不宜太多.

       3 异步多线程是无序的,启动顺序不确定、执行时间不确定、结束时间不确定.

  • 相关阅读:
    数据库数据格式化之Kettle Spoon
    NopCommerce开源项目中很基础但是很实用的C# Helper方法
    oracle 两个逗号分割的字符串 如何判断是否其中有相同值
    MongoDB+MongoVUE安装及入门
    C#中Dictionary<TKey,TValue>排序方式
    kettle的基本介绍
    Kettle能做什么?
    oracle like 条件拼接
    loading加载和layer.js
    关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/7040485.html
Copyright © 2020-2023  润新知