zoukankan      html  css  js  c++  java
  • C# 异步多线程

    多线程的概念和应用

    /// <summary>
    /// 1.进程和线程的特点
    /// 2.委托启用多线程
    /// 3.多线程的特点:不卡主线程,速度快无秩序
    /// 4.异步的回调和状态参数
    /// 5.异步等待的三种方式
    /// 6.异步的返回值
    /// 
    /// 进程 和线程的 是计算机概念
    /// 进程:运行时 占用全部计算资源的总和
    /// 线程:程序执行流的最小单位;任何操作都是由线程完成的;
    ///       线程是依托进程存在的,一个进可以包括多个线程;
    ///       线程也可以有自己的计算资源
    /// 多线程:多个执行流同事运行
    ///         1.CPU 太快了,分时间片--上线文切换(架子环境 -- 计算 -- 保存环境)
    ///           微观视角,一个核同一时刻只能执行一个线程;
    ///           宏观视角,多线程并发
    ///         2:多核(多CPU),可以独立工作
    ///            四核八线程 --- 核是物理核,线程是虚拟核
    ///            
    /// Thread 是C# 语言对线程的封装
    /// 
    /// 同步 :完成计算后,再进入下一行
    /// 异步 :不会等待方法的完成,会直接进入下一行
    /// 
    /// 1、同步方法卡界面,主线程忙于计算
    ///    异步多线程方法不卡界面,主线程完了,计算任务交给子线程去做
    ///    winform 提升用户体验;web 一个业务操作后要发邮件,异步发送邮件
    /// 2、同步方法慢,只有一个线程干活
    ///    异步多线程方法快,因为多线程并发运算;
    ///    便是不是线程越多越好,并非线程增长,a资源换时间   多线程也有时间管理成本
    /// 3.异步多线程 的应用
    ///    1)多个独立任务同时运行;
    /// 4.异步多线程无序,启动无序,结束无序,执行时间不确定
    /// </summary>
    View Code

    异步操作方式

    IAsyncResult async = null; //异步操作的状态
    Action<string> action = this.Calc; //创建实例
    AsyncCallback callback = _ia =>
    {
        Console.WriteLine(_ia == async);//判断 callback 的 参数 IAsyncResult 和 委托异步操作的实例是否是一个;Result 是一个
        Console.WriteLine(_ia.AsyncState);//调用异步状态 “wuyc”
        Console.WriteLine("已经结束");
    };
    async = action.BeginInvoke("Show1_", callback, "wuyc");//异步调用
    action.EndInvoke(async);//使 async 异步调用 完成的时候才能继续往下执行
    异步操作
  • 相关阅读:
    所遇bug
    PHP后端读取文件给video标签返回视频地址
    element-ui 上传组件 自定义上传没有进度条解决方法
    PHP递归生成分类树
    Vue.js学习 — 微信公众号菜单编辑器(二)
    Vue.js学习 — 微信公众号菜单编辑器(一)
    swiper3插件无缝滚动配置
    PHP获取一周的日期
    bootstrap-select多选下拉列表插件使用小记
    html5小总结
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/9501379.html
Copyright © 2011-2022 走看看