C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计969个文字,预计阅读时间需要4分钟。
前言+最近在阅读.NET ThreadPool starvation,and how queuing makes it worse这篇文章时,发现文中代码中的一种Task用法之前从未见过,在网上查阅了一些资料后,也是云里雾里,感到非常困惑。今天来探讨一下。
前言
最近在阅读 .NET Threadpool starvation, and how queuing makes it worse 这篇博文时发现文中代码中的一种 Task 用法之前从未见过,在网上看了一些资料后也是云里雾里不知其解,很是困扰。今天在程序员节的大好日子里终于想通了,于是写下这篇随笔分享给大家,也过过专心写博客的瘾。
这种从未见过的用法就是下面代码中的 await Task.Yield() :
static async Task Process() { await Task.Yield(); var tcs = new TaskCompletionSource<bool>(); Task.Run(() => { Thread.Sleep(1000); tcs.SetResult(true); }); tcs.Task.Wait(); }
(注:上面的代码不是示例,只是因为这段代码而初遇 await Task.Yield)
Task.Yield 简单来说就是创建时就已经完成的 Task ,或者说执行时间为0的 Task ,或者说是空任务,也就是在创建时就将 Task 的 IsCompeted 值设置为0。
本文共计969个文字,预计阅读时间需要4分钟。
前言+最近在阅读.NET ThreadPool starvation,and how queuing makes it worse这篇文章时,发现文中代码中的一种Task用法之前从未见过,在网上查阅了一些资料后,也是云里雾里,感到非常困惑。今天来探讨一下。
前言
最近在阅读 .NET Threadpool starvation, and how queuing makes it worse 这篇博文时发现文中代码中的一种 Task 用法之前从未见过,在网上看了一些资料后也是云里雾里不知其解,很是困扰。今天在程序员节的大好日子里终于想通了,于是写下这篇随笔分享给大家,也过过专心写博客的瘾。
这种从未见过的用法就是下面代码中的 await Task.Yield() :
static async Task Process() { await Task.Yield(); var tcs = new TaskCompletionSource<bool>(); Task.Run(() => { Thread.Sleep(1000); tcs.SetResult(true); }); tcs.Task.Wait(); }
(注:上面的代码不是示例,只是因为这段代码而初遇 await Task.Yield)
Task.Yield 简单来说就是创建时就已经完成的 Task ,或者说执行时间为0的 Task ,或者说是空任务,也就是在创建时就将 Task 的 IsCompeted 值设置为0。

