await

C#异步编程

寵の児 提交于 2020-01-15 03:34:32
什么是异步编程 什么是异步编程呢?举个简单的例子: using System.Net.Http; using System.Threading.Tasks; using static System.Console; namespace Core { class Async { static void Main() { Start(); End(); } static void Wait()=>WriteLine("waiting..."); static void End()=>WriteLine("end..."); static int Start() { WriteLine("start..."); HttpClient client = new HttpClient(); Waiting(); var result = client.GetStringAsync("https://www.visualstudio.com/"); string str = result.Result; return str.Length; } } } 上面这段代码中,Main方法中的代码是按照自上而下的顺序执行的。网络状况不佳时, Start() 方法是比较耗时(注意,这里在 Start 方法中调用了异步方法 GetStringAsync ,但该方法在此处是以同步方式执行的

iostat 命令

天涯浪子 提交于 2020-01-12 02:42:21
iostat -x 1 10   Linux 2.6.18-92.el5xen 02/03/2009   avg-cpu: %user %nice %system %iowait %steal %idle   1.10 0.00 4.82 39.54 0.07 54.46   Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util   sda 0.00 3.50 0.40 2.50 5.60 48.00 18.48 0.00 0.97 0.97 0.28   sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00   sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00   sdd 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00   sde 0.00 0.10 0.30 0.20 2.40 2.40 9.60 0.00 1.60 1.60 0.08   sdf 17.40 0.50 102.00 0.20 12095.20 5.60 118.40 0.70 6.81 2.09 21.36  

linux性能监控——CPU、Memory、IO、Network

。_饼干妹妹 提交于 2020-01-08 19:18:51
一、CPU 1、良好状态指标 CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%。 上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。 可运行队列:每个处理器的可运行队列<=3个线程。 2、监控工具 vmstat $ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 14 0 140 2904316 341912 3952308 0 0 0 460 1106 9593 36 64 1 0 0 17 0 140 2903492 341912 3951780 0 0 0 0 1037 9614 35 65 1 0 0 20 0 140 2902016 341912 3952000 0 0 0 0 1046 9739 35 64 1 0 0 17 0 140 2903904 341912 3951888 0 0 0 76 1044 9879 37 63 0 0 0 16 0 140 2904580

.net 中的async,await理解

江枫思渺然 提交于 2020-01-02 04:47:45
理解: 1、async修饰的方法可理解为异步方法(必须要配合await,否则和普通方法无异) 2、当async方法执行遇到await,则立即将控制权转移到async方法的调用者 3、由调用者决定是否需要等待async方法执行完再继续往下执行 4、await会挂起当前方法,即阻塞当前方法继续往下执行,转交控制权给调用者 注意:如果调用一个async方 法,却不使用await关键字来标记一个挂起点的话,程序将会忽略async关键字并以同步的方式执行。编译器会对类似的问题发出警告。 例子一:(控制台程序) 1 static void Main(string[] args) 2 { 3 MyMain();//由于main方法无法定义成async,顾此定义一个方法MyMain来表示main方法。 4 Console.Read(); 5 } 6 static async void MyMain() 7 { 8 Console.WriteLine("main方法开始执行"); 9 AsyncAction(); 10 Console.WriteLine("main方法继续执行"); 11 Console.WriteLine("main方法执行结束"); 12 } 13 14 static async Task<string> AsyncAction() 15 { 16 Console

async await 使用代码详解

元气小坏坏 提交于 2019-12-28 04:47:42
小白版正确代码 async function fn() { function f1() { return new Promise((resolve, reject) => { setTimeout(function () { console.log(11111) resolve() }, 3000) }) } function f2() { return new Promise((resolve, reject) => { setTimeout(function () { console.log(222222) resolve() }, 2000) }) } function f3() { return new Promise((resolve, reject) => { setTimeout(function () { console.log(333333) resolve() }, 1000) }) } await f1(); await f2(); await f3(); } async function ns(){ await fn() console.log(444444) } ns() 输出结果: Promise {} VM251:5 11111 VM251:13 222222 VM251:22 333333 VM251:34 444444 错误演示1 async

async/await简单使用

心已入冬 提交于 2019-12-05 19:04:50
async function process(array) { for await (let i of array) { setTimeout(function(){console.log(i);},i*1000); } } process([6,3,4,9,1]) //输出结果: // 1 // 3 // 4 // 6 // 9 来源: https://www.cnblogs.com/shurun/p/11939880.html

ByteStream

元气小坏坏 提交于 2019-12-05 17:48:07
节省内存消耗。 /// <summary> /// 字节流,包装流以实现高效的异步字节访问 /// </summary> public sealed class ByteStream : IDisposable { private readonly Stream _stream; private readonly byte[] _buffer; private int _position; private int _bufferedBytes; public ByteStream(Stream stream) { _stream = stream; _buffer = new byte[1024 * 8]; } public async ValueTask<byte?> ReadByteAsync() { if (_position == _bufferedBytes) { _position = 0; _bufferedBytes = await _stream.ReadAsync(_buffer, 0, _buffer.Length).ConfigureAwait(false); if (_bufferedBytes == 0) // 流读取结束 { return null; } } return _buffer[_position++]; } public void

彻底搞懂 C# 的 async/await

独自空忆成欢 提交于 2019-12-05 12:20:14
前言 # Talk is cheap, Show you the code first! Copy private void button1_Click(object sender, EventArgs e) { Console.WriteLine("111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); AsyncMethod(); Console.WriteLine("222 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId); } private async Task AsyncMethod() { var ResultFromTimeConsumingMethod = TimeConsumingMethod(); string Result = await ResultFromTimeConsumingMethod + " + AsyncMethod. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId; Console.WriteLine(Result); //返回值是Task的函数可以不用return } /