当前位置: 首页 > news >正文

上海的网站设计公司价格推广公司怎么接活

上海的网站设计公司价格,推广公司怎么接活,嘉兴网站定制,简述网站开发的基本原则本来这章该讲的是 ASP .NET Core 中的 IIS 和 Kestrel ,但是我看了下这个是给服务器用的。而我只是个 Unity 客户端程序,对于服务器的了解趋近于零。 鉴于我对服务器知识和需求的匮乏,这里就不讲原书(大部分)内容了。本…

        本来这章该讲的是 ASP .NET Core 中的 IIS 和 Kestrel ,但是我看了下这个是给服务器用的。而我只是个 Unity 客户端程序,对于服务器的了解趋近于零。

        鉴于我对服务器知识和需求的匮乏,这里就不讲原书(大部分)内容了。本章节里面有一部分还是客户端也可以学习的,就是异步流。所以这个章节就改为只学习异步流即可。

        本教程学习工程:魔术师Dix / HandsOnParallelProgramming · GitCode


1、异步流简介

        .Net Core 3.0 还引入了异步流(Asynchronous Stream)支持。

异步返回类型 | Microsoft Learn了解在 C# 中异步方法可以具有的返回类型,以及每种类型的代码示例。icon-default.png?t=N6B9https://learn.microsoft.com/zh-cn/dotnet/csharp/asynchronous-programming/async-return-types

        这项新功能可以使开发人员等待 IAsyncEnumerable<T> 上的 foreach 循环以使用流中的元素,并使用 yield 返回流以生成元素。异步流不但支持海量数据,而且可使服务器在同一时间通过有效地利用线程来做出响应。

2、语法介绍

        按照本章节的说法,我们这里使用两个接口:IAsyncEnumerable<T> 和 IAsyncEnumerator<T>。对于接口的实现比较好说,直接看代码:

    public class MyAsyncEnumerable : IAsyncEnumerable<int>{private MyAsyncEnumerator mAsyncEnumerator;public IAsyncEnumerator<int> GetAsyncEnumerator(CancellationToken cancellationToken = default){if (mAsyncEnumerator == null)mAsyncEnumerator = new MyAsyncEnumerator();return mAsyncEnumerator;}}public class MyAsyncEnumerator : IAsyncEnumerator<int>{private int m_Value;public async ValueTask<bool> MoveNextAsync(){m_Value++;await Task.Delay(1000);if (m_Value < 10)return true;elsereturn false;}public int Current => m_Value;public ValueTask DisposeAsync(){m_Value = 0;return new ValueTask(Task.CompletedTask);}}

        这里我们看到,每次执行 MoveNext 的时候,就会等待 1s (这里是模拟某个非常耗时的函数),之后再继续执行直到返回 false,这里当然是和普通迭代器模式是一样的。

3、测试用例

        下面我们来测试一下,直接在主线程调用运行以下函数:

        public static async void TestRunWithAsyncStream(){Debug.Log("TestRunWithAsyncStream Start !");MyAsyncEnumerable myEnumerable = new MyAsyncEnumerable();await foreach (var item in myEnumerable){Debug.Log($"{Task.CurrentId} => {item}");                }Debug.Log("TestRunWithAsyncStream End !");}

        运行结果如下:

         可见运行过程中并没有阻塞主线程,而是在异步执行了MoveNext,将值返回到当前循环体中。由于方法体是在主线程执行的,所以还可以这么写:

        public static async void TestRunWithAsyncStream(){Debug.Log("TestRunWithAsyncStream Start !");MyAsyncEnumerable myEnumerable = new MyAsyncEnumerable();await foreach (var item in myEnumerable){Debug.Log($"{Task.CurrentId} => {item}");//创建一个Objvar go= GameObject.CreatePrimitive(PrimitiveType.Cube);go.name = $"OBJ_{item}";}Debug.Log("TestRunWithAsyncStream End !");}

        从运行结果上看:

         异步创建了 GameObject,这里就很方便地看到异步和主线程结合在一起了,在使用上并看不到任何差异。


4、总结

        异步流用起来很简单,写起来稍微复杂一些。

        在数据量不多的时候,我们通常是将所有的异步操作(例如读文件)完成,之后再在主线程执行一些 Unity 的操作。当然在一般情况下是没问题的,一般来讲数据都不大,不存在问题。但是如果是所谓的海量数据,读文件占用的时间就足够大,而主线程等待时间过长又没有反应,就不是很友好。这种情况下就可以使用异步流来处理:执行一段异步程序处理、马上就执行主线程处理。

        而且使用异步流能保证执行顺序(相应地并行度就只为1),比较适合某些流程性质的重逻辑。

        本教程学习工程:魔术师Dix / HandsOnParallelProgramming · GitCode

http://www.yingshimen.cn/news/248/

相关文章:

  • 南宁建网站必荐云尚网络做外贸有哪些网站比较好
  • 手机版企页网站案例宁波seo推广平台
  • 网站网页设计制作公司网站推广途径选择
  • 基于asp.net电子商务网站开发实践中的关键技术和应用网站制作案例怎么样
  • 梁志天室内设计公司官网深圳优化公司踏高粱seo
  • 深圳中瑞建设集团官方网站wordpress的意思
  • 大连seo整站优化班级做网站人的叫什么
  • 比较好的建站网站怎样建自己的网站赚钱
  • 网站建设的重要指标成都品牌设计公司有哪些
  • 网站开发demo网站建设案例方案
  • 协会网站建设需求文档网站一定也做数据库吗
  • 电信网站服务器那里可以建网站
  • 微网站怎么做百度关键词排名一个网站如何做双语
  • 做网站欢迎页什么意思永久免费虚拟机
  • 阿里巴巴网站开发是谁营销型旅游网站建设
  • 临沂网站搜索排名商城版网站建设
  • 安徽一方建设招标网站江苏seo网站排名优化
  • 网站建设公司专业网站研发开发一个空间放两个网站
  • 公司网站免费建立企业网站建设需要的资料
  • 南阳开网站制作网站建设课程心得
  • 如何做阿语垂直网站聊城做网站的公司效果
  • 软装设计网站推荐游戏推广犯法吗
  • 团购网站制作线上运营培训
  • 重庆网站优化建设网站开发费用报价表
  • 网站设计培训班百度热搜关键词排名优化
  • 网站建设企业网站怎么做网站设计公司模板
  • 想建设网站前期调研报告如何写有那种网站的浏览器
  • 网站群建设管理规定wordpress最低php版本
  • jsp购物网站开发 论文网站流量太大打不开怎么办
  • 怎么把服务器做网站wordpress登陆账号