当前位置:
首页 > Python基础教程 >
-
C#教程之C#异步的世界【上】(2)
WaitOne 等待是不是知道了点什么呢。我们回头来实现之前自定义异步方法的异步等待。
红色代码就是新增的异步等待。
【执行步骤】
问题2:异步为什么会提升性能
比如同步代码:
这个代码需要20秒。
如果是异步:
如此就只要10秒了。这样就节约了10秒。
如果是:
异步执行中间没有耗时的代码那么这样的异步将是没有意思的。
或者:
把耗时任务放在异步等待后,那这样的代码也是不会有性能提升的。
还有一种情况:
如果是单核CPU进行高密集运算操作,那么异步也是没有意义的。(因为运算是非常耗CPU,而网络请求等待不耗CPU)
问题3:线程的使用数量和CPU的使用率有必然的联系吗
答案是否。
还是拿单核做假设。
情况1:
单核下,我们只启动一个线程,就可以让你CPU爆满。
启动八次,八进程CPU基本爆满。
情况2:
一千多个线程,而CPU的使用率竟然是0。由此,我们得到了之前的结论,线程的使用数量和CPU的使用率没有必然的联系。
虽然如此,但是也不能毫无节制的开启线程。因为:
- 开启一个新的线程的过程是比较耗资源的。(可是使用线程池,来降低开启新线程所消耗的资源)
- 多线程的切换也是需要时间的。
- 每个线程占用了一定的内存保存线程上下文信息。
demo:http://pan.baidu.com/s/1slOxgnF
本文已同步至索引目录:《C#基础知识巩固》
对于异步编程了解不深,文中极有可能多处错误描述和观点。
感谢广大园友的指正。
本着相互讨论的目的,绝无想要误导大家的意思。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式