C#写多线程提交post抢购包,用线程池还是task?有很多不懂,帮解决一下
我觉得你两个都可以试下,也会有个直观的对比
一般多线程post,会有一个上限,就是当前电脑的硬件,所以会有一个相对线程数,比如:设置100个或者200个看效果。如果200个效果还不如100个那么肯定在100到200之间。
task本身会有线程池的,也是跟thread的区别,也可以试试parallel
异步和多线程本来不该合并讨论
异步是异步,多线程是多线程。
task是线程池,async/await才是异步。
异步指IO异步---换成非计算机的话就是,我需要结果,你有结果的时候通知我处理。所以包括事件处理其实也是异步的(传统是C++处理事件就是异步回调)
多线程只是让cpu并发,这两个并不是一个概念
也就是异步本身不耗cpu,他只是等待结果。
线程只是异步的等待结果的执行人,执行线程,cpu需要跑
但是换个执行人--------比如访问网络IO,访问磁盘IO,启动gpu运算,这些不耗cpu,比如 await Filestream.WriteAsync 异步向文件写数据(写文件io,当然不需要花费cpu大量时间)
所以你的问题,我们并无所谓用多线程用task,还异步post。 你这个抢红包的任务其实大量的用的不是cpu,而是网络io。如果你需要拿结果,区别的是异步拿还是同步拿,异步拿不耗费cpu,同步拿需要耗费cpu