请问如何以最快的速度执行一项任务

self001 2015-05-06 12:19:15
当然应该得用线程,那么怎么用呢,大家能否说下思路或给出大概代码……
要求是这样的,我要以最快最快的速度访问某一网页(访问网页的已经弄好了)
现在就是需要以最大的并发速度去访问他。越快越好,当然越占用系统资源少越好……我网上查了下,貌似用线程池不错,我初学,还不确定。
...全文
332 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
self001 2015-05-06
  • 打赏
  • 举报
回复
纯种 == 线程
self001 2015-05-06
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
多线程是用来解决cpu占用率太低——cpu资源浪费的问题。以多线程同时执行多个任务,平均每一个任务的执行时间通常是延长了而不什么加快了。多线程的目的是并行执行多任务,它是只一种“术”(或者说工具而已)而不是随便可以乱套用的目的。 至于有些人在线程中总是弄个死循环,结果一个线程就把cpu给“空转”着,多个线程更是多多地浪费cpu资源,这种在线程中写“循环、阻塞”的代码的方式更是编程大忌。
既然不阻塞。那我这种情况请问怎么解决叱,貌似我写的一个就是一下子创建了N多的纯种,再在线程中while(true)再在循环中访问网页的,那怎样才效率高,又占用资源少呢
  • 打赏
  • 举报
回复
多线程是用来解决cpu占用率太低——cpu资源浪费的问题。以多线程同时执行多个任务,平均每一个任务的执行时间通常是延长了而不什么加快了。多线程的目的是并行执行多任务,它是只一种“术”(或者说工具而已)而不是随便可以乱套用的目的。 至于有些人在线程中总是弄个死循环,结果一个线程就把cpu给“空转”着,多个线程更是多多地浪费cpu资源,这种在线程中写“循环、阻塞”的代码的方式更是编程大忌。
失落的神庙 2015-05-06
  • 打赏
  • 举报
回复
引用 16 楼 self001 的回复:
[quote=引用 15 楼 wawd74520 的回复:] 我感觉 开多了还会占网速。 让用户自己设定 开多少个线程去刷新比较好。根据自己的网速来。
占网速 没关系,最好是把带宽全用上……一直刷往死里刷…[/quote] 不是说占不占没关系问题。 是如果是一根2m宽带。 你开几万个线程去采集。 那每个请求都会卡死了呀
self001 2015-05-06
  • 打赏
  • 举报
回复
这个不能按一个正常的客户端软件来……因特殊的要求……
self001 2015-05-06
  • 打赏
  • 举报
回复
引用 15 楼 wawd74520 的回复:
我感觉 开多了还会占网速。 让用户自己设定 开多少个线程去刷新比较好。根据自己的网速来。
占网速 没关系,最好是把带宽全用上……一直刷往死里刷…
失落的神庙 2015-05-06
  • 打赏
  • 举报
回复
我感觉 开多了还会占网速。 让用户自己设定 开多少个线程去刷新比较好。根据自己的网速来。
self001 2015-05-06
  • 打赏
  • 举报
回复
引用 13 楼 starfd 的回复:
引用 10 楼 self001 的回复:
[quote=引用 8 楼 starfd 的回复:] 访问单个网页怎么可能多线程呢……
我写的一个类似于刷票的东西,当然是访问越快刷得越高。单个线程肯定是很慢了
弄了半天原来你是要这样子的,你这个妥妥的直接用线程池啊,或者直接
Parallel.For(0, 10000000, i =>
            {
                //刷票代码
            });
[/quote] 谢谢,我详细查查。
  • 打赏
  • 举报
回复
引用 10 楼 self001 的回复:
引用 8 楼 starfd 的回复:
访问单个网页怎么可能多线程呢……
我写的一个类似于刷票的东西,当然是访问越快刷得越高。单个线程肯定是很慢了
弄了半天原来你是要这样子的,你这个妥妥的直接用线程池啊,或者直接
Parallel.For(0, 10000000, i =>
            {
                //刷票代码
            });
by_封爱 版主 2015-05-06
  • 打赏
  • 举报
回复
你都说了 执行"一项任务" 直接调用就行了...... 又不是多个task LZ你想多了.. 至于如果你又要问如何快速执行多个task 那就另开一帖吧 哈哈
Justin-Liu 2015-05-06
  • 打赏
  • 举报
回复
访问速度的快慢不是你程序能控制的,你能做的就是最快速地进行重复请求,当然,这个好像也不是你能控制的,你可以让它慢,但是不能让它更快,CPU越高级应该是越快吧
self001 2015-05-06
  • 打赏
  • 举报
回复
引用 8 楼 starfd 的回复:
访问单个网页怎么可能多线程呢……
我写的一个类似于刷票的东西,当然是访问越快刷得越高。单个线程肯定是很慢了
  • 打赏
  • 举报
回复
你多线程创建N个,也只是发起N次请求,如果N越大,只会导致服务器连接数越高,然后响应越慢……
  • 打赏
  • 举报
回复
访问单个网页怎么可能多线程呢……
我叫小菜菜 2015-05-06
  • 打赏
  • 举报
回复
引用 10 楼 self001 的回复:
引用 8 楼 starfd 的回复:
访问单个网页怎么可能多线程呢……
我写的一个类似于刷票的东西,当然是访问越快刷得越高。单个线程肯定是很慢了
引用 14 楼 self001 的回复:
引用 13 楼 starfd 的回复:
[quote=引用 10 楼 self001 的回复:] [quote=引用 8 楼 starfd 的回复:] 访问单个网页怎么可能多线程呢……
我写的一个类似于刷票的东西,当然是访问越快刷得越高。单个线程肯定是很慢了
弄了半天原来你是要这样子的,你这个妥妥的直接用线程池啊,或者直接
Parallel.For(0, 10000000, i =>
            {
                //刷票代码
            });
[/quote] 谢谢,我详细查查。[/quote] 现成的并行库,简单粗暴耶。 不过就那双核2.x GHz的渣机子,并行没多大意义,上限就摆在那里,怎么搞都差不多,还不如干掉其他软件,让它安静地跑。
self001 2015-05-06
  • 打赏
  • 举报
回复
引用 5 楼 tcmakebest 的回复:
楼主说的感觉不像是速度问题,因为访问网页快不快主要看带宽和服务器反应时间. 如果上述存在瓶颈,开再多线程也没用.
可能我描述得不清楚,我的意思是,先不考虑网页服务器这些因素,就当作是执行一项任务,也不考虑线程返回……就比如拿baidu.com来说,就一直Get一直Get...我写了个创建N多线程的方法,感觉速度不快。是否用线程池这些更省资源,并且速度不会差呢?线程池这些我还没了解过
self001 2015-05-06
  • 打赏
  • 举报
回复
tcmakebest 2015-05-06
  • 打赏
  • 举报
回复
楼主说的感觉不像是速度问题,因为访问网页快不快主要看带宽和服务器反应时间. 如果上述存在瓶颈,开再多线程也没用.
  • 打赏
  • 举报
回复
你的问题跟多线程没有直接关系。只有重构业务逻辑流程、论证确实有异步操作的可能性,对多线程处理各部分的机制进行分析,才能知道到底该不该多线程编程。 没有金刚钻是做不了瓷器活儿的。这确实不是一个买卖,而是研发。所以不下功夫花时间,不可能说结果如何。而你的描述不具有可执行程度,无法入手。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧