7

关于Task 的疑问

 3 years ago
source link: https://bbs.csdn.net/topics/399171723
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

关于Task 的疑问

假设我有一个方法是这样,当然,有可能我的语法是错的
C# code?
Public async void Run (){
var  rst=await xxx();
var  rst2=xxx();
}

为什么要用第一种而不是第二种,好吧,异步。但我知道,对于接口来说,每个请求都是异步的,为啥还要在方法里面使用异步呢?
我觉得这是为了异步而异步。
如果是并行我还能理解,等待好几个方法执行完成再往下走嘛!这样或许可以提高执行效率。
应该是我对Task理解不够吧!望大神给个通俗易通的解析,感激不尽!!!

我的是接口指的是wcf、webapi...这种接口!

await是什么,await是等待,等待执行结果。

所以我们并不关心你是什么wcf,webapi。

我们只关心你想不想要执行结果,不想要结果你就第2种,想要结果你就第一种

是的,一年前那几个5年的新人告诉你,想要结果,放个定时器啊,循环啊,加个变量啊,这是标准回答

而1年后,让他们自己回答,还是标准回答么

我第二种也能返回结果啊

await是异步等待
如果xxx是个异步方法。
var ss = await xxx() 就是异步等待返回结果。
xxx();是异步执行,不考虑返回结果
var ss = xxx().Result 是同步获取返回结果。

举个例子:
public void Method1(){
   打印日志 11
   Method2()
   打印日志22
}

public async void Method2(){
   代码段1
   打印日志33
   await xxx();//xxx()比较耗时 可用Task.Delay()代替测试
   打印日志44
   代码段2
   打印日志55
}
日志顺序为 11 33 22 44 55,也就是Method2执行完代码段1就先返回了


建议百度.net awai机制

C# code?
public async Task<bool> ExcuteSql() {
//执行插入数据
return true;
}
public bool ExcuteSql_2() {
//执行插入数据
return true;
}
public async void InsertData() {
var rst = await ExcuteSql();
var rst2 = ExcuteSql_2();
}
引用 1 楼 手在键盘敲很轻 的回复:

我的是接口指的是wcf、webapi...这种接口!

接口跟你的问题有关系么?没关系,不要胡乱联系。是,你可以说你是iis的,iis每个访问都是独立线程。
独立线程和异步有关系么??线程是线程,异步是异步。还是那句话少看博客园,线程和异步本身就是两个独立概念。

线程是cpu并发,单线程和多线程是一组概念
异步是IO--------同步IO和异步IO才是一组概念

所以,你wcf如何,webapi如何,根本就和你讨论的题目没有1毛钱的关系。不要学博客园那种乱攀关系的搞法。你想乱攀关系,那就请做好去讨论String血案的准备,很简单,为啥博客园们整天折腾一个string。因为他们喜欢把各种名词和概念乱攀关系。

是的,如果你认为wcf就是异步,ok,那么你可以不await,那么如果这个Run需要执行5秒,那么他就执行5秒,如果这个run里有个string,ok,这个5秒string不释放的,因为你还在用着,所以他们开始乱攀关系了。string让我的系统崩溃了。我们说不是string让你的系统崩溃的,是你自己写的东西让你系统崩溃的

await xxx()则是另外的东西,他回拆成更小的执行单元,这些更小的执行单元,会把你的5秒,拆成N个更小的执行单元,假设其中一个要用string的单元只要1秒钟,他执行完毕string不用了。你猜博客园们的那个最喜欢的锅string还有木有??

引用 7 楼 手在键盘敲很轻 的回复:

可能我刚刚没有描述清楚,如上,我 ExcuteSql 与 ExcuteSql2 做同样的事,为什么要写成异步?

我们说了异步和同步才是一组概念。

所以你问我们为啥要异步,那么我们就只能问,你想同步么??异步的概念是“我让别的人做,做好了通知我,同时在这个期间我还可以做其他的事情”
同步的意思是“我让别人做,但是现在我等着他做完,这期间我啥也不做,就站在他背后盯着他”

iis,wcf是多线程了,可以并行访问了。但是他并行了,你就不管了???不管可以,不管的话,那就请移步到博客园去讨论“血案”就行了

https://www.cnblogs.com/huangxincheng/p/14743654.html

OK,你准备好看博客园了么,正好那些个喜欢乱攀关系的血案来了,正好这血案就是1年前那几个5年的新人给你标准回答,正好这有是一个喜欢乱攀关系的博主

请准备好。非要把线程和异步拿着一起乱攀关系的结果

“线程等于异步,所以请开线程,然后放定时,放变量,用定时器检测结果”

你觉得这是为了异步而异步。
那你就不用就是了,本来就没有必要跟在别人屁股后面转

匿名用户不能发表回复!

有关task4的学习和疑问_的博客

有关task4的学习和疑问 # 使用位置参数定义和调用函数 # 该函数返回参数x的绝对值 defmy_abs(x): ifx>=0: returnx else return-x result=my_abs(-2) print(result) # 使用关键字参数定义和调用函数 # 该函数输出传入的所有...

关于TaskStatus状态WaitingForChildrenToComplete 的疑问

varparent =newTask(ParentTask); parent.Start(); Thread.Sleep(2000); Console.WriteLine(parent.Status); Thread.Sleep(6000); Console.WriteLine(parent.Status); Console.ReadLine(); ...

关于task疑问 c# task添加顺序_关于c#:Task和async等待所需的指导

在浏览了许多文章和视频后,我仍然对异步编程有疑问。我正在一个项目中,在服务层中,我已将所有方法创建为异步方法。所有返回Task < T >或Task(我确保不返回void)。现在到问题。我的Api调用异步方法,该方法...

关于AsyncTask的一个小疑问:为什么任务执行有延迟?_天...

newGetImageTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } 运行查看结果: 哈哈,完美解决,简直快如飞! 到这里大家会有个疑问:道理我都懂,可是明明是新建一个任务对象了,为什么第一次你执行的任务会影响到第二次任务的执...

async,await和TaskCompleteSource的一些疑问_Tong19932...

之前看ET框架的时候,发现了一些不理解的地方。其实都是集中在async-await的用法和TaskCompleteSource的用法上的,这会儿就学习了一些。 第一个例子: 然后在Main函数中调用TaskCompleteSourceButton_OnClick方法, ...

基于SSM框架的毕业设计管理系统的设计与实现(附资源下载)

我的毕业设计就叫毕业设计管理系统的设计与实现,哈哈 目录 1.摘要 2.需求分析 3.数据库设计 ...毕业设计是本科教育的最后一个环节,整个过程包括课题拟定与审核、师生双选、开题报告、文档审核、中期检查、毕业...

C# Task.Run 和 Task.Factory.StartNew 区别

有小伙伴问我,为什么不推荐他使用 Task.Factory.StartNew ,因为 Task.Run 是比较新的方法。 本文告诉大家 Task.Run 和 Task.Factory.StartNew 区别

sys.dm_os_waiting_tasks 引发的疑问(中)_weixin_33717...

上一篇我们说了一下sys.dm_exec_requests 和 sys.dm_os_waiting_tasks 在获取并行等待的时候得不同结果,这一篇我们谈论下我的第二个疑问:为什么一个并行计划(4线程)却一下出现了那么多等待,SQL的并行到底是怎么执行的!!! 先贴...

Spring Task 定时任务没有定时执行,为什么呢?_热衷技术...

相信你也有过如下的疑问: Spring Task 的 crontab 的表达式 和linux下的 crontab 有什么区别? crontab 表达式记不住? 定时任务阻塞会有什么影响? 多个定时任务的情况下如何运行的? 具有相同表达式的定时任务,他们的执行顺序如何?

关于spring task任务无缘无故会停止的问题

相信大家在项目中一定会有用到异步定时任务,因为task在项目中应用场景还是非常广泛的,因为对于一些实时性要求不是很高的场景,如果用同步的话,就会造成资源浪费,并且再高并发场景下很容易就将服务器的资源耗光,...

activity FLAG_ACTIVITY_NEW_TASK启动疑问

当在一个的activity以FLAG_ACTIVITY_NEW_TASK的方式启动另一个已经启动的activity时,需要设置 intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setAction(Intent.ACTION_MAIN); 否则将要打开的activity会...

FutureTask疑问_weixin_30384031的博客

我们知道通过FutureTask的get方法可以拿到Callable的返回值,起初猜想get方法应该是不断循环,判断Callable是否达到运行完成状态(会有标记位),如果未完成则wait,这个判断过程是需要加锁完成的,但查看其源码发现并没有锁机制,而是简单了wait,...

计算机领域中Task和Job的区别

There are only two hard things in Computer Science: cache invalidation and naming things (计算科学中只有两件事最难:命名和缓存失效) —— Phil Karlton 本文就是讨论一...

快速上手C#中的Task编程

.NET4.0开始引入Task,它的出现大大简化了异步编程的复杂度,相较于传统的Thread和ThreadPool,Task更加容易控制和使用,下面就来看看它的具体用法。 1、一个简单的串行程序 串行程序大家肯定不陌生,说白了就是从上...

关于Task C# 中的Task创建指南

标题起得有些"大",意在集大家的力量,总结出来一份关于Task相对"正确"的知识总结,欢迎读者提出宝贵意见!本文内容来自于笔者在编码的时候种种疑问,来自于对异步编程在操作系统中实际运行过程的好奇。平时使用Task...

Task和Thread的关系

之前一直有个疑问Thread.CurrentThread.ManagedThreadId和Task.CurrentId到底有什么关系。出于这个好奇,动手写了一段程序来验证它们到底有没有关系。同时看看被Async/await修饰的方法跟没有被Async/await修饰的方法...

C# Task TaskFactory 设置最大并行线程数的方法

关于 LimitedConcurrencyLevelTaskScheduler 的疑惑   阅读目录 1. LimitedConcurrencyLevelTaskScheduler 介绍 简单使用 回到顶部 1. LimitedConcurrencyLevelTaskScheduler 介绍 这个TaskScheduler用过的...

Java多线程(一)

目录Java多线程(一)前言线程与进程概念关系Thread、Runnable、 Java多线程(一) 前言 线程与进程 概念 关系 Thread、Runnable、

使用 Task.Wait()?立刻死锁(deadlock)

最近读到一篇异步转同步的文章,发现其中没有考虑到异步转同步过程中发生的死锁问题,所以特地在...调用 Task.Wait() 或者 Task.Result 立刻产生死锁的充分条件: 1. 调用 Wait() 或 Result 的代码位于 UI 线程;...

c# async/await与task疑问 Android Intent.FLAG_ACTIVITY_NEW_TASK的个人理解

目录 首先分四部曲简单做一下说明 1.What(是什么):Intent类中的一个静态标志属性 2.Why(为什么要使用):在特殊情况下,如果不加这个标志,会报错...public static final int FLAG_ACTIVITY_NEW_TASK = ...

Go协程池设计思路(Task-Job-Worker)

1. 铺垫:Go 的接收器Receiver 在go语言中,没有类的概念,但是可以给类型(结构体,自定义类型)定义方法。所谓方法就是定义了接受者的函数。接受者定义在func关键字和函数名之间。可以理解成为结构体定义函数方法...

探索Task的取消

我们都知道Task.Run方法可以传入一个CancellationToken,用于取消。可是有多少人真的去了解过当调用CancellationSource.Cancel方法时,Task是否真的被取消了 我们做个实验 public static async void Foo() { var...

我给妹子讲了一晚上的RTOS Task的原理

“自从你上次给我讲解了RTOS的一些概念原理,我没那么困惑了,我也查阅了很多资料,但是我还有些关于'Task'的疑问……” “找个时间我再给你详细讲解下吧。”热情的我没等她说完我就答应她了。 于是,我约她在晚上...

Recurrent Neural Network for Text Classification with Multi-Task Learning

引言 Pengfei Liu等人在2016年的IJCAI上发表的论文,论文提到已存在的网络都是针对单一任务进行训练,但是这种模型都存在问题,即缺少标注数据,当然这是任何机器学习任务都面临的问题。 为了应对数据量少,常用的...

关于springBoot实现动态Task任务周期

前言 SpringBoot 实现动态 Job,可以通过 API 动态变更 cron。 原生的 Job 实现起来很简单,只要用注解 @Scheduled(cron=xxxxxx) 来实现就可以了,但是要实现动态更改 ... cron ,就需要做点其他的了。...

如何在 csproj 中用 C# 代码写一个内联的编译任务 Task

我之前写过一些改变 MSBuild 编译过程的一些博客,包括利用 Microsoft.NET.Sdk 中各种自带的 Task 来执行各种各样的编译任务。更复杂的任务难以直接利用自带的 Task 实现,需要自己写 Task。 本文介绍非常简单的 ...

你的gradle task出什么毛病了?(译)

最近工作中需要在android工程编译过程中加gradle task,拷贝文件。我在写task的过程中遇到了很多问题,于是在网上找到了这篇博客,里面总结了写gradle task时经常遇到的一些问题,我觉得总结得非常的好,所以翻译...

为什么你的 Spring Task 定时任务没有定时执行?

前言 定时任务的使用,在开发中可谓是家常便饭了,定时发送邮件、短信。 避免数据库,数据表过大,定时将数据转储。...相信你也有过如下的疑问: Spring Task 的 contab 的表达式 和 linux 下的 cont...

java scheduletask_spring中定时任务taskScheduler的详细介绍

前言众所周知在spring 3.0版本后,自带了一个...被执行的类要实现Runnable接口TaskScheduler接口TaskScheduler是一个接口,TaskScheduler接口下定义了6个方法1、schedule(Runnable task, Trigger trigger);指定一...

C#/.NET 中 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 不同的执行效果和用法建议

在 C#/.NET 中,有 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 中,有几种不同的让当前线程释放执行权的方法。他们的作用都是放弃当前线程当前的执行权,让其他线程得以调度。但是他们又不太...

C# 将 Begin 和 End 异步方法转 task 异步

在 .NET Framework 有两个不同的异步方法,一个是 Asynchronous Programming Model (APM) 另一个是 Task-based asynchronous pattern (TAP) 说 APM 和 TAP 估计大家都不认识。其实 APM 就是有成对的 Begin 和 End ...

C# Task.ConfigureAwait方法能来做什么?

Configures an awaiter used to await this System.Threading.Tasks.Task. 配置一个等待Task的awaiter 其实真的没有理解这句话的含义,希望有知道意义的可以告诉我一下.. 二.场景: 1.在非UI程序中使用Task....

论文阅读笔记:A Network-based End-to-End Trainable Task-oriented Dialogue System

教会机器完成与人自然交流的任务是充满挑战性的,当前,开发面向任务的对话系统需要创建多个组件,通常这涉及大量的手工制作或获取昂贵的标记数据集以解决每个组件的统计学习问题。在这项工作中,我们介绍了基于神经...

波士顿房价预测数据及代码

本资源包含数据,代码,解释,相应的文件。代码是练习用的,文章中的代码都可以运行出来,是很好的一个练手项目。

相关热词 c# 字符串后六位 c#程序如何创建本地文本 c#和java比较 c# list 查找 c#打开窗体 c# 逻辑循环 c# 去数组中的数据库 c# 查找所有集成类 c#调用c++ 结构封装 c#两个类属性绑定

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK