开始超过200个线程,但只有大约20个活动线程

时间:2013-07-02 14:39:20

标签: c# multithreading

整天困扰我的问题是我开始大约200个线程,每个线程都会调用方法,该方法将调用方法中的webservice。

当我打开TCPView时,我只能在客户端进程到WCF服务器之间看到大约20个连接。

我不打算使用PLINQ或ThreadPool,因为每个线程可能需要很长时间才能计算然后返回,

My Client线程部分代码如下:

for (int i = 0; i < inputs.Count(); i++)
{
    Thread t = new Thread(new ParameterizedThreadStart(InnerCalculate));
    t.Start(new ThreadParameter()
        {
            Index = i,
            Count = inputs.Count
        });

    threads.Add(t);
    Thread.Sleep(200);
}

foreach (Thread thread in threads)
{
    thread.Join();
}

行为的服务端配置如下:

    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceThrottling maxConcurrentInstances="6"/>
    </behavior>

谁能告诉我哪里错了?或问题可能发生在哪里?谢谢!

1 个答案:

答案 0 :(得分:1)

这不仅仅是WCF限制可用的并发连接数吗?你对20的测量只是间接指示发生了什么,你有可能确实拥有完整的200个线程,但一次只能连接20个。