.net core 并发研究结果

.net core 并发研究结果

  • 更正
  • 研究结果

更正

  1. 之前的代码有瑕疵,我之前以为task.delay是延迟,结果发现不是。
    thread.sleep才是。= =
  2. ThreadPool.SetMinThreads()。第一个参数为工作线程,第二个为io线程。进行io请求的时候工作线程会关闭。

研究结果

线程的增长确实和线程池有关。
await 关键字 和 .wait()方法会阻塞当前线程,等待其返回结果。这么做不会阻塞线程池,导致的结果是并发线程只有那么几个。
不使用wait,在并发结束后执行WaitAll()方法,可以通过阻塞线程池的方式来扩大线程数量。实验结果是在短时间内会增加非常多的线程。

.net core 并发研究结果_第1张图片
机器参数为 win10 平台 .net core 2.1 ,参数为SetMinThreads 参数。数据量就是发送请求的数量。cup为4核。

上面只是部分数据,后续我还进行了一些数据的测试,最终发现工作线程在240-250之间的时候所花时间相对最短。大概在19-22s左右。io线程的数量在min值以内都差不多,过多的io线程会导致花费时间增长。目前是在win平台,由于没有合适的机器没办法在linux测试。linux的io模型不一样,数据应该也有差别。cpu盒数也会影响测试结果。

你可能感兴趣的:(C#)