新手浅谈Task异步编程和Thread多线程编程

时间:2021-07-22 22:47:16

初学Task的时候上网搜索,看到很多文章的标题都是task取代thread等等相关,我也一直以为task和thread是一类,其实task是.net4.0提出的异步编程,在之前.net1.0有delegete.beginInoke(XXXX),还有.net2.0中的EAP,在最新的4.5中又有async、await这种新的异步编程。而Thread和Threadpool则是多线程编程。

新手浅谈Task异步编程和Thread多线程编程  新手浅谈Task异步编程和Thread多线程编程新手浅谈Task异步编程和Thread多线程编程

但是Task也是把任务推到线程池中

         static void Main(string[] args)
{
for(int i=;i<;i++)
{
var task1 = Task.Factory.StartNew(() => Run());
var task2 = Task.Factory.StartNew(() => Run());
var task3 = Task.Factory.StartNew(() => Run());
var task4 = Task.Factory.StartNew(() => Run());
}
Console.ReadKey();
} static void Run()
{
Thread.Sleep();
Console.WriteLine("TaskId:{0} ThreadId:{1}", Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
}

运行的结果为:
新手浅谈Task异步编程和Thread多线程编程

Task和Threadpool相比,Task能获取返回值、有更多的控制等,Threadpool占用的资源较小,如果只需要把任务丢到线程池中,其他的都不管的话,就建议使用Threadpool。

新手浅谈Task异步编程和Thread多线程编程的更多相关文章

  1. 浅谈&period;Net异步编程的前世今生----APM篇

    前言 在.Net程序开发过程中,我们经常会遇到如下场景: 编写WinForm程序客户端,需要查询数据库获取数据,于是我们根据需求写好了代码后,点击查询,发现界面卡死,无法响应.经过调试,发现查询数据库 ...

  2. 浅谈&period;Net异步编程的前世今生----EAP篇

    前言 在上一篇博文中,我们提到了APM模型实现异步编程的模式,通过使用APM模型,可以简化.Net中编写异步程序的方式,但APM模型本身依然存在一些缺点,如无法得知操作进度,不能取消异步操作等. 针对 ...

  3. 浅谈Task的用法

    Task是用来实现多线程的类,在以前当版本中已经有了Thread及ThreadPool,为什么还要提出Task类呢,这是因为直接操作Thread及ThreadPool,向线程中传递参数,获取线程的返回 ...

  4. 新手浅谈C&num;Task异步编程

    Task是微软在.net framework 4.0发布的新的异步编程的利器,当然4.5新增了async.await,这儿我们先说Task相关. 在实际编程中,我们用的较多的是Task.Task.Fa ...

  5. C&num;异步编程之浅谈Task

    上一篇讲到了.Net4.5新增的async和await关键字,其实async和await算是一组标记,真正实现异步操作的是Task新开的任务线程. 什么是Task Task是.Net4.0新增用来处理 ...

  6. 浅谈JavaScript异步编程

    单线程模式 我们知道JS的执行环境是单线程的,是因为JS语言最早是运行在浏览器端的语言,目的是为了实现页面上的动态交互.实现动态交互的核心就是DOM操作,因此决定了JS必须是单线程模式工作.我们来假设 ...

  7. 浅谈js异步

    大家都知道,js是一个单线程的语言(只有一个线程来执行js函数),所以如果某一个函数执行任务耗时比较长的话,就会造成阻塞,使得后续任务一直处于等待状态. 一.阻塞示例 function f1(){ ; ...

  8. 浅谈JS异步轮询和单线程机制

    单线程特点执行异步操作 js是单线程语言,浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务就会排队形成一个任务队列排队等候执行.一般而已,相对耗时的操作是要通过异步 ...

  9. 浅谈JS异步(asychrouous)

    一.概念 (1)asychronous 异步 是JS这种单线程语言解决多任务的一种方法,将耗时的任务(io)设定为异步工作,先交给浏览器负责相关功能的线程来实现耗时的部分工作,按顺序放入任务队列中,等 ...

随机推荐

  1. php爬虫 phpspider

    <?php /** * Created by PhpStorm. * User: brady * Date: 2016/12/9 * Time: 17:32 */ ini_set("m ...

  2. Leetcode&colon; Longest Repeating Character Replacement &amp&semi;&amp&semi; G 面经

    Given a string that consists of only uppercase English letters, you can replace any letter in the st ...

  3. EntLib Unity父类的依赖注入问题

    Unity的注入有3种方式:构造函数.[Dependency]属性.[InjectionMethod]方法.这3种方式涉及到的interface或class都会去Registrations里找,找不到 ...

  4. Junit4学习笔记--方法的执行顺序

    package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit ...

  5. 汇编-显示我放到AL中的数值

    按书上练习,有一些我看不懂. . .model flat,stdcall option casemap:none include \masmplus\include\windows.inc inclu ...

  6. ASP&period;NET Zero--15&period;一个例子(8)商品分类管理-权限控制

    1.添加权限常量 打开文件AppPermissions.cs [..\MyCompanyName.AbpZeroTemplate.Core\Authorization\AppPermissions.c ...

  7. Table Compression

    https://docs.oracle.com/cd/E11882_01/server.112/e40540/tablecls.htm#CNCPT608

  8. 对wordcount单词字母部分的修改

    原始代码: int s; s = ch; switch (s) { case 'a':letter[0]++; break; case 'b':letter[1]++; break; case 'c' ...

  9. 【nlp】中文分词基础原则及正向最大匹配法、逆向最大匹配法、双向最大匹配法的分析

    分词算法设计中的几个基本原则: 1.颗粒度越大越好:用于进行语义分析的文本分词,要求分词结果的颗粒度越大,即单词的字数越多,所能表示的含义越确切,如:“*局长”可以分为“* 局长”.“*局 长” ...

  10. c&plus;&plus;11日志练习

    /************************************************************** 技术博客  http://www.cnblogs.com/itdef/ ...