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

    c# 到了现在6.0时代对于异步多线程也出了不少的类,从最开始thread到threadpool ,到后面的Task 到现在async/await   也经历了不少版本。今天一个一个来聊聊。

    什么是异步什么是多线程

    首先我们要明确异步和多线程不是一个概念,异步指向的是运行的逻辑顺序不是同步的。

    而什么是多线程呢。这里就要说到进程和线程的概念了。算了这里不多说自行百度。多线程就是字面意思通过指令集同时操作不同的线程。打个比方把:我想喝到一杯牛奶我需要干什么,我是不是要先烧开水,然后拿奶粉,最后冲泡。那异步多线程就是我在烧水的同时去拿了奶粉 ,最后我在一起冲泡。就相当于开一个子线程,2个线程同时干不同的事情肯定比单个线程一步一步来要快。简单的来说就是拿cpu的性能去换时间。

    c#  Thread

    了解了异步多线程的理念后那接下来我们再来聊聊c#Tread类。

    public void main()
    {
       ThreadStart threadStart = new ThreadStart(()=>this.threadClick());
       Thread thread = new Thread(threadStart);
       thread.Start();
    }
    
     public string threadClick()
    {
       return $"threadClick{Thread.CurrentThread.ManagedThreadId}线程完成";
    }

    c#  ThreadPool

    public void main()
    {
       ThreadPool.QueueUserWorkItem((obj) => this.threadClick()) ;
    }
    public string threadClick()
    {
       return $"threadClick{Thread.CurrentThread.ManagedThreadId}线程完成";
    }

    c# Task

    public void main()
    {
       Task task = new Task(() => { Console.WriteLine("aaaa"); });
       task.Start();
       Task.Run(() => {
          Console.WriteLine("aaaa");
       });
    }

    c# TaskFactory

    public void main()
    {
        Task.Factory.StartNew(() =>
        {
           Console.WriteLine("aaaa");
        });
    }

    c# async/await

    public async Task GetTaskAsync()
    {
       await Task.Run(() => { Console.WriteLine("aaaa"); });
    }
  • 相关阅读:
    redis的常用操作
    django中的缓存 单页面缓存,局部缓存,全站缓存 跨域问题的解决
    drf 下的 url控制 解析器 响应器 版本控制 分页
    django下的 restful规范 Drf框架 psotman的安装使用 及一些容易遗忘的小点
    vue学习 自建服务器 node
    vue学习 条件、循环指令、computed、watch、局部、全局、组件间交互
    Linux入门
    redis进阶
    redis介绍和安装
    DRF解析器和渲染器
  • 原文地址:https://www.cnblogs.com/YorkQi/p/14485068.html
Copyright © 2011-2022 走看看