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

有学给宝宝做衣服的网站吗互联网论坛

有学给宝宝做衣服的网站吗,互联网论坛,河南城乡建设部网站,织梦网站被做跳转还被删除文件并发(英文Concurrency),其实是一个很泛的概念,字面意思就是“同时做多件事”,不过方式有所不同。在.NET的世界里面,处理高并发大致有以下几种方法: 1,异步编程 异步编程就是使用futu…

并发(英文Concurrency),其实是一个很泛的概念,字面意思就是“同时做多件事”,不过方式有所不同。在.NET的世界里面,处理高并发大致有以下几种方法:

1,异步编程

异步编程就是使用future模式(又称promise)或者回调机制来实现(Non-blocking on waiting)。如果使用回调或事件来实现(容易callback hell),不仅编写这样的代码不直观,很快就容易把代码搞得一团糟。

不过在.NET 4.5 及以上框架中引入的async/await关键字(在.NET 4.0中通过添加Microsoft.Bcl.Async包也可以使用),让编写异步代码变得容易和优雅。通过使用async/await关键字,可以像写同步代码那样编写异步代码,所有的回调和事件处理都交给编译器和运行时帮你处理了,简单好用。

使用异步编程有两个好处:不阻塞主线程(比如UI线程),提高服务端应用的吞吐量。所以微软推荐ASP.NET中默认使用异步来处理请求。

例如:我用异步做微信模板消息推送。

复制代码
/// <summary>
/// 使用异步Action测试异步模板消息接口
/// </summary>
/// <param name="checkcode"></param>
/// <returns></returns>
public async Task<string> TemplateMessageAsync(string openId, string first, string keyword1, string keyword2, string keyword3, string keyword4, string remark, string url)
{if (openId == null){return ReturnString(7771, "OPENID不能为空");}else{var testData = new //TestTemplateData(){first = new TemplateDataItem(first),keyword1 = new TemplateDataItem(keyword1),keyword2 = new TemplateDataItem(keyword2),keyword3 = new TemplateDataItem(keyword3),keyword4 = new TemplateDataItem(keyword4),remark = new TemplateDataItem(remark)};var result = await TemplateApi.SendTemplateMessageAsync(_wechat.APPID, openId, "m6td4jp_heMA5rhopbUaHApOlp2DD5x18BMXWKj3M5U", url, testData);return ReturnString(0, "成功");}
}
复制代码

 2,并行编程

并行编程的出现实际上是随着CPU有多核而兴起的,目的是充分利用多核CPU的计算能力。并行编程由于会提高CPU的利用率,更适合客户端的一些应用,对于服务端的应用可能会造成负面影响(因为服务器本身就具有并行处理的特点,比如IIS会并行的处理多个请求)。我自己使用并行编程最多的场景是之前分析环境数据不确定度的时候,使用并行的方式计算蒙特卡洛模拟(计算上千次之后拟合),当然后来我使用泰勒级数展开来计算不确定度,没有这么多的计算量就无需并行了。当然在计算多方案结果比较的情况下,还是继续使用了并发计算。

在.NET中,并行的支持主要靠.NET 4.0引入的任务并行库和并行LINQ。通过这些库可以实现数据并行处理(处理方式相同,输入数据不同,比如我上面提到的应用场景)或者任务并行处理(处理方式不同,且数据隔离)。通过使用并行处理库,你不用关心Task的创建和管理(当然更不用说底层的线程了),只需要关注处理任务本身就行了。

具体的用法还是参考官方文档:https://msdn.microsoft.com/en-us/library/dd460693(v=vs.110).aspx

3,响应式编程

响应式编程最近成为了一个Buzzword,其实微软6年前就开始给.NET提供一个Reactive Extensions了。一开始要理解响应式编程有点困难,但是一旦理解了,你就会对它的强大功能爱不释手。简单来说,响应式编程把事件流看作数据流,不过数据流是从IEnumable中拉取的,而事件流是从IObservable推送给你的。为什么响应式编程可以实现并发呢?这是因为Rx做到线程不可知,每次事件触发,后续的处理会从线程池中任意取出一个线程来处理。且可以对事件设置窗口期和限流。举个例子,你可以用Rx来让搜索文本框进行延迟处理(而不用类似我很早的时候用个定时器来延迟了)。

要详细了解Rx最好的方式就是浏览 IntroToRx.com 这个网站,当然还有官方文档:https://msdn.microsoft.com/en-us/data/gg577609。

4,数据流编程

数据流(DataFlow)编程可能大家就更陌生了,不过还是有些常用场景可以使用数据流来解决。数据流其实是在任务并行库(TPL)上衍生出来的一套处理数据的扩展(也结合了异步的特性),TPL也是处理并行编程中任务并行和数据并行的基础库。

望文生义,TPL DataFlow就是对数据进行一连串处理,首先为这样的处理定义一套网格(mesh),网格中可以定义分叉(fork)、连接(join)、循环(loop)。数据流入这样的处理网格就能够并行的被处理。你可以认为网格是一种升级版的管道,实际上很多时候就是被当作管道来使用。使用场景可以是“分析文本文件中词频”,也可以是“处理生产者/消费者问题”。

参考资料当然也是官方文档:https://msdn.microsoft.com/en-us/library/hh228603(v=vs.110).aspx。

5,Actor模型

Scala有Akka,其实微软研究院也推出了Orleans来支持了Actor模型的实现,当然也有Akka.NET可用。Orleans设计的目标是为了方便程序员开发需要大规模扩展的云服务, 可用于实现DDD+EventSourcing/CQRS系统。

官方网站是:http://dotnet.github.io/orleans/

转自:https://www.cnblogs.com/atree/p/Concurrency_Async.html

转载于:https://www.cnblogs.com/DreamRecorder/p/9944712.html

http://www.lbrq.cn/news/2445607.html

相关文章:

  • t型布局网站的优缺点永久免费域名申请
  • php网站开发具体的参考文献本地推广最有效的方法
  • 钟表企业网站管理系统最好的bt种子搜索引擎
  • 做图解的网站什么是seo教程
  • php网站忘记后台密码seo网站推广教程
  • 网站活跃度怎么做品牌网络营销成功案例
  • 哪些网站可以做兼职靠谱的李勇seo的博客
  • 中国工程建设招标网官方网站百度推广怎么做免费
  • 网站域名不合法什么是电商平台推广
  • 三亚可以做什么兼职乌海网站seo
  • 网站的建设需要数据库网站建设技术外包
  • wordpress静态加速seo优化专员招聘
  • 自己做的视频发什么网站吗线上引流线下推广方案
  • 注册网站的免费网址新闻类软文营销案例
  • wordpress怎么显示摘要网站页面优化方案
  • 软件定制公司值得去吗网站seo分析案例
  • 金蝶网站建设公司案例网站关键词排名优化方法
  • 网站建设分析游戏优化大师手机版
  • 带地板翻转的网站怎么做免费网页空间到哪申请
  • 自媒体网站建设要求seo站外优化平台
  • 手机网站建设哪家便宜网站建设策划书范文
  • 下班后做兼职任务网站站长工具流量统计
  • 网站建设wap客户引流的最快方法是什么
  • 昆明优化网站公司seo需要掌握哪些技术
  • 璧山集团网站建设如何注册一个平台
  • 仙桃市住房建设局网站竞价推广是什么意思
  • 想做个赚钱的网站不知道做那种山东seo百度推广
  • 创新的网站建站长沙营销型网站建设
  • 教做发绳的网站谷歌搜索引擎入口2022
  • 结合七牛云 做视频网站怎么做网站关键词优化
  • 21-ospf多区域
  • C++ 类型萃取:深入理解与实践
  • 【应急响应】进程隐藏技术与检测方式(二)
  • Kubernetes深度解析:企业级容器编排平台的核心实践
  • 重构数据库未来:金仓数据库,抢占 AI 原生时代先机
  • 网络测试工具