WiniNet 向多个WEB服务器请求是否存在隐患?

aix8848 2006-09-28 04:12:34
我在一个应用程序中加载了多个DLL,每个DLL开启了一个线程,每个线程一对一向不同的网站通过HTTP提交数据.如果所有网站正常的情况下,我的程序也是正常的.但当一个服务器反应慢的时候,其他的线程也跟着受影响,变得很慢了,请问大家有没有遇到过这样的情况? 这是我的实现有问题?还是WININET存在隐患.



...全文
161 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjgx007 2006-09-28
  • 打赏
  • 举报
回复
没有什么问题,wininet只是提供了访问网络的接口,至于是多线程还是单线程访问,是线程同步还是异步访问,是由程序员代码控zhi.
yjgx007 2006-09-28
  • 打赏
  • 举报
回复
这样是可以优加速度,但我最担心的是Wininet是不是机制有问题!
================

什么机制?
aix8848 2006-09-28
  • 打赏
  • 举报
回复
嗯.谢谢yjgx007

这样是可以优加速度,但我最担心的是Wininet是不是机制有问题!请问有没有谁开发过这样的功能啊?
yjgx007 2006-09-28
  • 打赏
  • 举报
回复
多线程应该是按时间片分配CPU的啊.他们之间会受影响吗?
==========================

我的意思是用等待事件控制, 等待并不消耗CPU时间,e.g
任何线程请求数据,可类似下面的过程函数.
ThreadProc(...)
{
while (hasmoredata)
{
WaitForSingleObject(hEvent, INFINITE);
ResetEvent(hEvent);
hasmoredata = request(4k data);
SetEvent(hEvent);
}
}

aix8848 2006-09-28
  • 打赏
  • 举报
回复
每个线程在本进程所占的CPU时间内,要么以时间片轮换方式,要么以优先级方式运行。如果以时间片轮换方式运行,则每个线程应该获得同样的时间量啊.

我又没有设置他们的优先级!

aix8848 2006-09-28
  • 打赏
  • 举报
回复
每个DLL中创建线程是这样创建的!

phThread = CreateThread(NULL,0,SendSMS,NULL,SYNCHRONIZE,NULL);
yjgx007 2006-09-28
  • 打赏
  • 举报
回复
但当一个服务器反应慢的时候,其他的线程也跟着受影响,变得很慢了
=======================

我想是由于服务器反应慢,那么相应接连速度过慢, 但该访问线程还是维持递交数据,
同步访问多个网站是好的选择,e.g, 一个访问线程A递交4k数据,暂时停止,由另一个访问线程B再次递交,B线程递交4k数据后,暂时停止,其它线程亦如此继续,如此反复。
aix8848 2006-09-28
  • 打赏
  • 举报
回复
多线程应该是按时间片分配CPU的啊.他们之间会受影响吗?
DentistryDoctor 2006-09-28
  • 打赏
  • 举报
回复
.但当一个服务器反应慢的时候,其他的线程也跟着受影响,变得很慢了,请问大家有没有遇到过这样的情况?

感觉这个有问题。
yjgx007 2006-09-28
  • 打赏
  • 举报
回复
很可能你是一个线程做完后(访问一个网站后)调用下一个线程.这样下一个线程一直在等待上个线程结束.
建议你异步访问, 就是多个线程同时访问多个网站, 线程调度由事件来控制。

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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