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. web3 产品介绍:Decentraland:开启你的虚拟现实区块链游戏之旅

    Decentraland(https://decentraland.org/)是一款基于区块链技术的虚拟现实游戏,它将去中心化的概念引入游戏世界,为玩家提供了一个创造.交互和探索的虚拟空间.在Dece ...

  2. 【Spring】05 注解开发

    环境搭建 配置ApplicationContext.xml容器文件[半注解实现] <?xml version="1.0" encoding="UTF-8" ...

  3. 论文写作:test 和 testing 使用的区别

    "test" 和 "testing" 的区别主要在于它们在句子中的用途和语法功能: Test: 名词: 指的是一次测试或考试.例如: "The stu ...

  4. 强化学习入门书籍《DeepReinforcementLearningHands-On-SecondEdition》

    前段时间在网上买了本强化学习入门的书籍,即<Deep-Reinforcement-Learning-Hands-On>,虽然是影印版的,但是感觉还是可以看看的,说的也蛮易懂的,感觉比现在市 ...

  5. 【转载】 windows python3 安装 openai gym 的 atari_py

    版权声明:本文为CSDN博主「dai1056318647」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/dai ...

  6. A3C与GA3C的收敛性分析

    G-A3C的代码: https://gitee.com/devilmaycry812839668/gpu_a3c 论文: <Reinforcement Learning thorugh Asyn ...

  7. [天线原理及设计>基本原理] 3. 辐射方向图或天线方向图

    <Antenna_Theory_Analysis_and_Design_3rd_Constantine_A._Balanis.pdf> 3. 辐射方向图或天线方向图 天线辐射方向图或天线方 ...

  8. 【Linux驱动】充电芯片bq24735调试详解

    一.bq24735简介 bq24735 是一款高效率同步电池充电器. 当系统供电需求暂时高于适配器最大供电水平的时候, bq24735 使用智能加速技术来允许电池向系统中释放能量,这样的话将保护适配器 ...

  9. CDH添加es服务

    地址:https://blog.csdn.net/guoliduo/article/details/105072857 注意:目前只支持cdh5.x的版本安装es,cdh6.x暂不支持.

  10. 二. Spring Boot 中的 “依赖管理和自动配置” 详解透彻到底(附+详细代码流程)

    二. Spring Boot 中的 "依赖管理和自动配置" 详解透彻到底(附+详细代码流程) @ 目录 二. Spring Boot 中的 "依赖管理和自动配置" ...