请教高手:多线程访问webservice为什么没有并发执行

chgsnake 2004-11-03 04:12:55
我写了个简单的webservice,然后用.net写了个客户端程序调用(就是add web reference生成proxy)。客户端程序启了50个线程访问webservice,但发现webservice是两个、两个执行的,而不是50个一起执行的,不知道谁能解释解释?是.net proxy自己的限制么?
service代码:
[WebMethod]
public string HelloWorld()
{
Thread.Sleep(3000);
}

client代码:
Thread[] t1=new Thread[50];
for (int i=0;i<50; i++)
{
Processor s1 = new Processor ();
t1[i] = new Thread(new ThreadStart(Run));
t1[i].Start();
}
public void Run()
{
WebReference.Service1 s= new WebReference.Service1();
string m = s.HelloWorld();
}
...全文
549 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
招RD和QA 2005-08-09
  • 打赏
  • 举报
回复
mark
hxhbluestar 2004-11-09
  • 打赏
  • 举报
回复
Mark一下
feiyang0721 2004-11-09
  • 打赏
  • 举报
回复
在webconfig里,maxconnection的值默认是2,更改成40。
<configuration>
<system.net>
<connectionManagement>
<add address="*" maxconnection="40" />
</connectionManagement>
</system.net>
</configuration>
Dxh_Asp_Net 2004-11-09
  • 打赏
  • 举报
回复
http://www.microsoft.com/china/msdn/archives/library/dnservice/html/service07222003.asp
Dxh_Asp_Net 2004-11-09
  • 打赏
  • 举报
回复
HTTP 双连接限制
HTTP 规范表明,一个 HTTP 客户端与任一服务器最多可以同时建立两个 TCP 连接。这可以防止单个浏览器在浏览某个页面(例如,具有 120 个嵌入的缩略图)时,由于连接请求过多而使服务器负载过重。此时,浏览器将仅创建 2 个连接,然后通过这两个管道开始发送 120 个 HTTP 请求,而不是创建 120 个 TCP 连接并通过每个连接来发送 HTTP 请求。
tongcheng 2004-11-09
  • 打赏
  • 举报
回复
UP一下
关注“异步方式进行访问”
dreammaster 2004-11-08
  • 打赏
  • 举报
回复
WebService执行本来也是异步的,可以查看Proxy类代码,每个方法都有相应的begin,end.
Uncommon 2004-11-07
  • 打赏
  • 举报
回复
WebService应该有一套自己的处理的机制

看一下配置文件Web.config和machine.config
runnercn 2004-11-06
  • 打赏
  • 举报
回复
Thread[] t1=new Thread[50];
for (int i=0;i<50; i++)
{
Processor s1 = new Processor ();
t1[i] = new Thread(new ThreadStart(Run));
t1[i].Start();
}
你把Thread生成完毕了再执行Thread:
Thread[] t1=new Thread[50];
for (int i=0;i<50; i++)
{
Processor s1 = new Processor ();
t1[i] = new Thread(new ThreadStart(Run));
}
for (int i=0;i<50; i++)
{
t1[i].Start();
}

shangqiao 2004-11-06
  • 打赏
  • 举报
回复
我想可能是服务器的限制吧
outspaceman 2004-11-05
  • 打赏
  • 举报
回复
gz
viena 2004-11-04
  • 打赏
  • 举报
回复
有道理
StevenXiong 2004-11-04
  • 打赏
  • 举报
回复
The HTTP/1.1 specification limits the number of connections from an application to two connections per server.
Tomgus 2004-11-03
  • 打赏
  • 举报
回复
楼上说的对。
理解异步为由系统自己控制的线程
只不过简单的应用多线程不一定能取得很好的效果。比如说:
1) 当系统负荷已经很高的时候(请求数量大),简单得为每个请求创建新的线程不但不能提高系统性能,反而导致更多的系统资源被浪费在了线程切换上面,得不偿失。
2) 对于相对简单的操作,线程的创建和销毁本身就变成了不可忽略的损耗,所以要尽量重复利用已有的线程。
Jinniu 2004-11-03
  • 打赏
  • 举报
回复
你可以使用异步方式进行访问,能够提高效率!
Alden 2004-11-03
  • 打赏
  • 举报
回复
不知道,帮你顶

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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