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         }
  • 相关阅读:
    赛前一个月
    Barricade---hdu5889(最短路+网络流)
    Tea---hdu5881(规律)
    The Best Path---hdu5883(欧拉路径)
    Cure---hdu5879(打表+找规律)
    Python列表操作
    Zabbix在Docker中的应用和监控
    flannel网络设置
    Volume
    Service资源清单
  • 原文地址:https://www.cnblogs.com/yanglang/p/9689908.html
Copyright © 2011-2022 走看看