网站的布局结构顺企网下载

bicheng/2026/1/25 22:21:48/文章来源:
网站的布局结构,顺企网下载,wordpress做导航页面模板,wordpress安装文件是哪个异步编程是一种思路异步相当于对线程池的封装await相当于让另一个线程来干这个事 常见概念已经有多线程了#xff0c;为何还要异步多线程与异步是不同的概念多线程与异步的适用场景不同*多线程**异步* 什么是异步任务(Task)包含了异步任务的各种状态的一个引用类型对于异步任务…异步编程是一种思路异步相当于对线程池的封装await相当于让另一个线程来干这个事 常见概念已经有多线程了为何还要异步多线程与异步是不同的概念多线程与异步的适用场景不同*多线程**异步* 什么是异步任务(Task)包含了异步任务的各种状态的一个引用类型对于异步任务的抽象任务的结果 异步方法(async Task)*async Task* 重要思想:不阻塞!*常见阻塞情形* 同步上下文*ConfigureAwait(false)* 一发即忘Fire-and-forget 简单任务如何创建异步任务Task.Run()Task.Factory.StartNew()new Task Task.Start()例子 如何同时开启多个异步任务任务如何取消任务超时如何实现在异步任务中汇报进度如何在同步方法中调用异步方法 常见的误区异步一定是多线程异步方法一定要写成async Taskawait一定会切换同步上下文异步可以全面取代多线程Task.Result 一定会阻塞当前线程开启的异步任务一定不会阻塞当前线程 同步机制传统方法轻量型并发集合第三方库 常见概念 已经有多线程了为何还要异步 多线程与异步是不同的概念 异步并不意味着多线程单线程同样可以异步 异步默认借助线程池 多线程经常阻塞而异步要求不阻塞 多线程与异步的适用场景不同 多线程 适合CPU密集型操作 适合长期运行的任务 线程的创建与销毁开销较大 提供更底层的控制操作线程、锁、信号量等 线程不易于传参及返回 线程的代码书写较为繁琐异步 适合IO密集型操作 适合短暂的小任务 避免线程阻塞提高系统响应能力什么是异步任务(Task) 包含了异步任务的各种状态的一个引用类型 正在运行、完成、结果、报错等 public class TODO {public static event Funcobject, string foo;static void Main() {Taskstring task new Taskstring((n) {Thread.Sleep(1500);for (int i 0; i (int)n; i) {Console.WriteLine(DONE {0}, i);}return ok;}, 3);Console.WriteLine(task.Status);task.Start();Console.WriteLine(task.Status);Thread.Sleep(1000);Console.WriteLine(task.Status);Thread.Sleep(2000);Console.WriteLine(task.Status);Console.WriteLine(task.Result);} } 输出结果 Created WaitingToRun Running DONE 0 DONE 1 DONE 2 RanToCompletion ok另有ValueTask值类型版本对于异步任务的抽象 开启异步任务后当前线程并不会阻塞而是可以去做其他事情 异步任务(默认)会借助线程池在其他线程上运行 获取结果后回到之前的状态任务的结果 返回值为Task的方法表示异步任务没有返回值 返回值为TaskT则表示有类型为T的返回值异步方法(async Task) 将方法标记async 后可以在方法中使用await关键字 await关键字会等待异步任务的结束并获得结果 async await 会将方法包装成状态机await类似于检查点 MoveNext方法会被底层调用从而切换状态async Task 返回值依旧是Task类型但是在其中可以使用await关键字 在其中写返回值可以直接写TaskT 中的T类型不用包装成TaskTasync void 同样是状态机但缺少记录状态的Task对象 无法聚合异常(Aggregate Exception)需要谨慎处理异常 几乎只用于对于事件的注册*异步编程具有传染性(Contagious) * 一处async处处async 几乎所有自带方法都提供了异步的版本 重要思想:不阻塞! await会暂时释放当前线程使得该线程可以执行其他工作而不必阻塞线程直到异步操作完成 不要在异步方法里用任何方式阻塞当前线程 常见阻塞情形 Task.Wait() Task.Result 如果任务没有完成则会阻塞当前线程容易导致死锁Task.GetAwaiter().GetResult()不会将Exception 包装为AggregateExceptionTask.Delay() vs. Thread.Sleep() 后者会阻塞当前的线程这与异步编程的理念不符 前者是一个异步任务会立刻释放当前的线程IO等操作的同步方法 其他繁重且耗时的任务 同步上下文 一种管理和协调线程的机制允许开发者将代码的执行切换到特定的线程 WinForms与WPF拥有同步上下文(UI 线程)而控制台程序默认没有 ConfigureAwait(false) 配置任务通过await方法结束后是否会到原来的线程默认为true 一般只有UI线程会采用这种策略TaskScheduler 控制Task的调度方式和运行线程 线程池线程Default 当前线程CurrentThread 单线程。上下文STAThread 长时间运行线程LongRunning优先级、上下文、执行状态等 一发即忘Fire-and-forget 调用一一个异步方法但是并不使用await或阻塞的方式去等待它的结束 无法观察任务的状态(是否完成、是否报错等) 简单任务 如何创建异步任务 Task.Run() Task.Factory.StartNew() 提供更多功能比如TaskCreationOptions.L ongRunning Task.Run相当于简化版new Task Task.Start() 很少有创建一个Task却没有让他立刻开始的例子 public class TODO {static async Task Main() {Console.WriteLine(12);Console.WriteLine(ThreadId Environment.CurrentManagedThreadId.ToString());var task await Task.Run(heavyJob);//Console.WriteLine(task);Console.WriteLine(123);}public static int heavyJob() {Console.WriteLine(ThreadId Environment.CurrentManagedThreadId.ToString());Thread.Sleep(10);return 1;}} 如何同时开启多个异步任务 public class TODO {static async Task Main() {var inputs Enumerable.Range(10, 10).ToArray();var tasks new ListTaskint();Console.WriteLine(Environment.CurrentManagedThreadId);foreach (var input in inputs) {tasks.Add(foo(input));}await Task.WhenAll(tasks);var outputs tasks.Select(x x.Result).ToArray();foreach (var output in outputs) {Console.WriteLine(output);}}public static async Taskint foo(int input) {await Task.Delay(5000);return input * 2;} }任务如何取消 CancellationTokenSource CancellationToken public class TODO {static async Task Main() {var cts new CancellationTokenSource();try {var task Task.Delay(100000, cts.Token);Thread.Sleep(2000);cts.Cancel();//抛出异常await task;} catch (TaskCanceledException) {Console.WriteLine(ss);} finally {cts.Cancel();}} } OperationCanceledException TaskCanceledException 推荐异步方法都带上CancellationToken这一传参 你自己写了异步方法却不支持传入这个————我可以不用但不能没有任务超时如何实现 在异步任务中汇报进度 如何在同步方法中调用异步方法 常见的误区 异步一定是多线程 异步编程不必需要多线程来实现 比如可以在单个线程上使用异步I/O 或事件驱动的编程模型(EAP) 单线程异步:自己定好计时器到时间之前先去做别的事情 多线程异步:将任务交给不同的线程并由自己来进行指挥调度 异步方法一定要写成async Task async关键字只是用来配合await 使用从而将方法包装为状态机 本质上仍然是Task,只不过提供了语法糖并且函数体中可以直接return Task的泛型类型 接口中无法声明async Task await一定会切换同步上下文 在使用await关键字调用并等待一个异步任务时异步方法不一定会立刻来到新的线程上 如果await了一个已经完成的任务(包括Task.Delay(0))会直接获得结果 异步可以全面取代多线程 异步编程与多线程有一定关系但两者并不是可以完全互相替代 Task.Result 一定会阻塞当前线程 如果任务已经完成那么Task.Result 可以直接得到结果 开启的异步任务一定不会阻塞当前线程 await关键字不一定会立刻释放当前线程所以如果调用的异步方法中存在阻塞(如Thread.Sleep(O)) 那么依旧会阻塞当前上下文对应的线程 同步机制 传统方法 Monitor(lock) Mutex Semaphore EventWaitHandle 轻量型 所有只有SemaphoreSlim不阻塞 ManualResetEventSlim 并发集合 第三方库 AsyncManulResetEvent Miccrosoft.VisualStudio.ThreadingAsyncLock Nito.AsyncEx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文化书院网站建设方案中国建设银行网站地址

目录 1. BUG 的定义 2. 如何创建 BUG 3. BUG 等级 4. BUG 生命周期 高频面试题: 1. BUG 的定义 当且仅当产品规格书存在且正确时,程序的实现和规格书的要求不匹配时,那就是软件错误。当产品规格说明书没有提到的功能时,以用户…

建商城网站的平台国外c2c平台有哪几个

目录 最长的斐波那契数列子序列的长度 1.题目 2.题目接口 3.解题思路及其代码 最长的斐波那契数列子序列的长度 1.题目 如果序列x_1&#xff0c;X_2&#xff0c;...&#xff0c;x_n 满足下列条件&#xff0c;就说它是斐波那契式的: 1.n > 3 2.对于所有i2 <n&a…

站内搜索本网站怎么做网站统计模板

在完成了 Rime 引擎/框架的安装&#xff0c;并安装了基础输入方案后&#xff0c;我们就可以在这个基础上开始 DIY 了。毕竟&#xff0c;Rime 最大的优势就是可定制性强。 但是&#xff0c;在我们 DIY 前&#xff0c;我们需要先做些准备工作。磨刀不误砍柴工&#xff0c;我们需…

自己做购物网站需要什么做旅游网站推广

标题 购票系统 类别 综合 时间限制 1S 内存限制 256Kb 问题描述 请实现一个铁路购票系统的简单座位分配算法&#xff0c;来处理一节车厢的座位分配。 假设一节车厢有20排、每一排5个座位。为方便起见&#xff0c;我们用1到100来给所有的座位编号&a…

湖州企业网站开发公司网站不被收录怎么办

作为一个刚开始学习的前端&#xff0c;小结一下&#xff1a;sort方法&#xff1a; 如果调用该方法时没有使用参数&#xff0c;将按字母顺序对数组中的元素进行排序&#xff0c;说得更精确点&#xff0c;是按照字符编码的顺序进行排序。要实现这一点&#xff0c;首先应把数组的元…

域名对网站有什么影响吗设计公司logo图片

目录 1.概述 1.1 考虑标定参数实现方式 1.2 A2L生成 2. 主机厂视角 3.小结 1.概述

龙华品牌网站制作seo职业技能培训班

2019独角兽企业重金招聘Python工程师标准>>> Nonblocking IO 使用的是 polling &#xff08;轮询&#xff09;的方法&#xff08;主动去问&#xff09;&#xff0c; 而 异步IO 使用的是信号机制&#xff08;等待系统通知&#xff09; 转载于:https://my.oschina.ne…

南京江宁做网站免费民事法律咨询

文章目录 4.1 比特币与区块链4.1.1 比特币基础4.1.2 比特币交易的工作流程&#xff1a;4.1.3 拓展案例 1&#xff1a;闪电网络4.1.4 拓展案例 2&#xff1a;比特币ATM 4.2 其他主要加密货币4.2.1 加密货币的多样性4.2.2 以太坊的案例4.2.3 拓展案例 1&#xff1a;非同质化代币&…

wordpress仿站插件WordPress实现网址导航

项目介绍 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;在线文档管理当然也不能排除在外。在线文档管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&…

网站标识代码怎么加产品推广外包

muParser数学公式解析 一、概述1. 针对速度进行了优化2. 支持的运算符3. 支持的函数4. 用户定义的常量5. 用户定义的变量6. 自定义值识别回调7. 其他功能 二、内置函数三、内置二元运算符四、三元运算符五、内置常量六、源码引入1. 源码文件2. 编译器开关1. MUP_BASETYPE2.MUP_…

自己做优惠劵网站网站seo查询工具

一、源码特点 java 大学生社团管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

检查目录遍历漏洞wordpress站点辽宁建设厅勘察设计网站

尝试了一下用C#运行一个控制台程序&#xff0c;希望获取输出并在适当的时候输入&#xff0c;看起来挺简单&#xff0c;不过实际使用发现只能让程序一次性执行完毕并获取输出&#xff08;并没有仔细尝试各种方式&#xff09;。 代码很简单&#xff1a; private void Test(){Proc…

商城网站建设框架国外优秀网站模板

在自然环境中&#xff0c;森林是地球生态系统的重要组成部分&#xff0c;它们为我们提供氧气、净化空气、防止土壤侵蚀等重要功能。然而&#xff0c;当森林发生火灾时&#xff0c;它们也会成为我们的噩梦。火势蔓延迅速&#xff0c;难以控制&#xff0c;对森林和生态环境造成严…

最好用的免费建站公司网站优化要怎么做

371.给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - ​​​​​​​&#xff0c;计算并返回两整数之和。 示例 1&#xff1a; 输入&#xff1a;a 1, b 2 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;a 2, b 3 输出&#xff1a;5 提示&#xff1a; -1000 …

枣强网站建设建设视频网站的视频源

使用Visual Studio打造强大的程序&#xff0c;从添加第三方库开始 博主简介一、引言二、理解第三方库三、下载和安装第三方库四、示例代码和演示五、总结 博主简介 &#x1f4a1;一个热爱分享高性能服务器后台开发知识的博主&#xff0c;目标是通过理论与代码实践的结合&#x…

河南网站排名一家专门做灯的网站

1. 322【零钱兑换】- 动态规划 题目&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回…

软件公司都是帮别人做网站么做外贸商城网站

目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优…

大学班级网站建设做自媒体需要哪些网站

torch.nn.Module.apply 是 PyTorch 中用于递归地应用函数到模型的所有子模块的方法。它允许对模型中的每个子模块进行操作&#xff0c;比如初始化权重、改变参数类型等。 以下是关于 torch.nn.Module.apply 的示例&#xff1a; 1. 语法 Module.apply(fn)Module&#xff1a;P…

网站排版注册网站时手机号格式不正确

支持向量机(SVM)的异常检测 SVM通常应用于监督式学习,但OneClassSVM[8]算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 OneClassSVM OneClassSVM的思想来源于这篇论文[9],SVM使用…

烟台北京网站建设梵克雅宝戒指

前言&#xff1a;最近在学以太网通讯&#xff0c;发现RMII接口配置的时钟管脚有MCU自己输出&#xff0c;想要看看是怎么输出的&#xff0c;对此进行记录 1、交接项目项目上使用的是PA8管脚来输出时钟50MHZ&#xff0c;提供给上面refclk。 先看手册 PA8的复用功能具备将MCU时钟…