zoukankan      html  css  js  c++  java
  • 异步编程代码记录

     1                         #region 每个思考时间完成以后发送指定的数据量,不管服务器是否处理完
     2 
     3                         for (int i = 0; i < _threadNumber; i++)
     4                         {
     5                             Task.Factory.StartNew(new Action<object>(t =>
     6                             {
     7                                 PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},Starting Process {i}");
     8                                 Do((int)t);
     9                             }), i);
    10                         }
    11 
    12                         #endregion
    13                         
    14                         #region 发送N次请求以后等待所有线程完成,等服务器处理完所有的请求后,再执行下一次发送
    15                         //var tasks = new List<Task<Tuple<int, bool>>>();
    16                         //for (int i = 0; i < _threadNumber; i++)
    17                         //{
    18                         //    PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},Starting Process {i}");
    19                         //    tasks.Add(DoAsync(i));
    20                         //}
    21 
    22                         //foreach (var task in Task.WhenAll(tasks).GetAwaiter().GetResult())
    23                         //{
    24                         //    if (task.Item2)
    25                         //    {
    26                         //        PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},Ending Process {task.Item1}:{task.Item2}");
    27                         //    }
    28                         //}
    29                         #endregion
     1         public void Do(int i)
     2         {
     3             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},working..{i}");
     4             Thread.Sleep(1000);
     5             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},worked..{i}");
     6         }
     7 
     8 
     9         public async Task<Tuple<int, bool>> DoAsync(int i)
    10         {
    11             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},working..{i}");
    12             await Task.Delay(3000);
    13             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},worked..{i}");
    14             return Tuple.Create(i, true);
    15         }
  • 相关阅读:
    23.Java函数
    22.java中的break和continue关键字
    21.Java中for循环
    20.java中的while循环
    19.java中选择判断语句(switch)
    18.java中判断(if…else)
    17.java运算符的优先级与结合性
    16.Java三元运算符
    数组去重
    数组 字符串 对象 常用方法
  • 原文地址:https://www.cnblogs.com/yanglang/p/9689908.html
Copyright © 2011-2022 走看看