1.计时器类Stopwatch

Stopwatch stopwatch=new Stopwatch()
stopwatch.Start();//开始计时
stopwatch.Stop();//停止计时
stopwatch.Reset();//重置计时时间
stopwatch.Restart();//重新开始计时==Reset()+Start()

2.Parallel类

Parallel.Invoke(Run1, Run2, Run3);//尽可能并行执行每个方法
Parallel.For(0,100,item=>{});//并行for循环
Parallel.ForEach(strs, item =>{});//并行foreach循环 ConcurrentBag<T> //线程安全集合,无序
List<T> //非线程安全集合,有序
list.AsParallel() //并行linq

3.异步等待

//对Task 返回类型,可以使用 Task.CompletedTask 结束方法
//对Task<T> 可以使用 Task.FromResult(result) 结束方法 //在同步方法中调用异步方法:
//有返回值:
string s1 = File.ReadAllTextAsync("d:/1.txt").Result;
string s1 = File.ReadAllTextAsync("d:/1.txt").GetAwaiter().GetResult();
//无返回值:
ile.ReadAllTextAsync("d:/1.txt").Wait();

4.

//线程池是单例的,全局唯一
ThreadPool.SetMaxThreads(8,8)//设置最多开启8个线程 //程序会等待所有前台线程执行完才会结束,而不会等待后台线程
//Task 创建的都是后台线程,默认是线程池线程,可以设置 TaskCreationOptions.LongRunning 指定为长时间运行的任务,就不是线程池线程了
Task task = new Task(() => Console.WriteLine("aaa"), TaskCreationOptions.LongRunning);

5.任务取消

CancellationTokenSource cts = new CancellationTokenSource();//取消令牌
Task.Run(() =>
{
Console.WriteLine($" {j} 任务开始...");
Thread.Sleep(300);//耗时操作
if (cts.IsCancellationRequested)//在耗时操作开始之前判断
return;
Thread.Sleep(300);//耗时操作
Console.WriteLine($" {j} 任务结束...");
}, cts.Token); if (cts.IsCancellationRequested)//在任务开始之后,在耗时操作开始之前判断,手动控制不执行后续操作,节省资源 Task.Run(()=>{},cts.Token) //在这里设置取消令牌,如果在任务开始之前就取消,那么该任务不会被创建,节省资源

6. AsyncLocal

AsyncLocal<T> 用这个可以给子线程共享变量 这个会记录类似 [线程id-值] 字典,区分不同线程的值
子线程默认获取到父线程的值,但是子线程如果改变了值,父线程不会影响。
可用于跨请求区分变量。不同请求,线程一定不同,存的线程id不同 就能区分值。

Task 笔记的更多相关文章

  1. c# task笔记

    class Program { //创建Task任务的三种方式(无返回值) static void Main(string[] args) { //方法一 Task task1 = new Task( ...

  2. 【Hadoop代码笔记】Hadoop作业提交之TaskTracker获取Task

    一.概要描述 在上上一篇博文和上一篇博文中分别描述了jobTracker和其服务(功能)模块初始化完成后,接收JobClient提交的作业,并进行初始化.本文着重描述,JobTracker如何选择作业 ...

  3. Android菜鸟的成长笔记(13)——异步任务(Async Task)

    原文:[置顶] Android菜鸟的成长笔记(13)——异步任务(Async Task) Android的UI线程主要负责处理用户的事件及图形显示,因此主线程UI不能阻塞,否则会弹出一个ANR(App ...

  4. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  5. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  6. spark 笔记 15: ShuffleManager,shuffle map两端的stage/task的桥梁

    无论是Hadoop还是spark,shuffle操作都是决定其性能的重要因素.在不能减少shuffle的情况下,使用一个好的shuffle管理器也是优化性能的重要手段. ShuffleManager的 ...

  7. spark 笔记 12: Executor,task最后的归宿

    spark的Executor是执行task的容器.和java的executor概念类似. ===================start executor runs task============ ...

  8. spark 笔记 9: Task/TaskContext

    DAGScheduler最终创建了task set,并提交给了taskScheduler.那先得看看task是怎么定义和执行的. Task是execution执行的一个单元. Task: execut ...

  9. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

  10. 异步-学习笔记3 Task

    1. 通过Task启动多线程 2. 解决多线程的几大应用场景 private void btnTask_Click(object sender, EventArgs e) { Console.Writ ...

随机推荐

  1. VUE小知识~作用域插槽

    作用域插槽可以为我们向组件内插入特定的标签,方便修改维护. 组件内需要使用 <slot></slot>进行插槽站位. 组件标签内需要使用<template > &l ...

  2. appium+python自动化-文本(name)定位

    前言 appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了 name定位报错 1.最新版appium V1.7用name定位,报错: selenium.co ...

  3. WordPress基础之菜单导航栏设置

    菜单是WordPress的一项重要功能,方便用户快速打开网站页面,我们通常说的网站导航栏就是菜单.菜单通常显示在网站的顶部或者底部,以Apple官网的为例: 这篇文章我们就学习下:如何添加.删除菜单: ...

  4. ansible 部署hadoop

    规划 ansible 节点 ansible controller 镜像rhel 8.2 镜像ansible hadoop 集群 master slave1 slave2 镜像centos 1810 0 ...

  5. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-59 - 判断元素是否显示 - 上篇

    1.简介 有些页面元素的生命周期如同流星一闪,昙花一现.我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒.我们就来判断元素是否显示出现过. 在操作元素之前,可以先判断元素的状 ...

  6. 腾讯云免费申请SSL证书配置https

    证书申请 1.进入腾讯云官网,在上方直接搜索SSL,搜索到后点击立即选购: 2.点击进去后选择自定义配置,加密标准选择默认的国际标准,证书种类选择域名免费版(DV),勾选同意服务条款后选择免费快速申请 ...

  7. Google主打的机器学习计算框架——jax的升级包

    相关: 机器学习洞察 | 一文带你"讲透" JAX Jax的主要应用场景: 深度学习 (Deep Learning):JAX 在深度学习场景下应用很广泛,很多团队基于 JAX 开发 ...

  8. 这学校真是“nice”——人还未走,网就先停了

    人还没走,手续还没办,网就给我停了,这就要清人了,这学校太"nice"了!!!

  9. Sentry For Vue 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!

    内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...

  10. 使用BizyAir,没有显卡,也能玩AI绘图

    或许很多人跟我一样,没有显卡,但又很想玩AI绘图,但本地绘图怕是无缘了,只能借助云GPU的方式了. 今天跟大家分享一下一个简单目前可白嫖无门槛的方法实现无显卡也能玩AI绘图. 方案就是ComfyUI+ ...