我試圖模仿一個場景,其中有30萬消費者正在訪問服務器。所以我試圖通過從併發線程反覆查詢服務器來創建僞客戶端。我們可以在C#應用程序中創建300,000個線程並在PC上運行它嗎?
但是要清除的第一個障礙是,是否可以在PC上運行300,000個線程?下面是我使用的,看我intially多少最大線程數可以得到的,後來再與實際的函數替換測試功能代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace CheckThread
{
class Program
{
static int count;
public static void TestThread(int i)
{
while (true)
{
Console.Write("\rThread Executing : {0}", i);
Thread.Sleep(500);
}
}
static void Main(string[] args)
{
count = 0;
int limit = 0;
if (args.Length != 1)
{
Console.WriteLine("Usage CheckThread <number of threads>");
return;
}
else
{
limit = Convert.ToInt32(args[0]);
}
Console.WriteLine();
while (count < limit)
{
ThreadStart newThread = new ThreadStart(delegate { TestThread(count); });
Thread mythread = new Thread(newThread);
mythread.Start();
Console.WriteLine("Thread # {0}", count++);
}
while (true)
{
Thread.Sleep(30*1000);
}
} // end of main
} // end of CheckThread class
} // end of namespace
現在我想做可能是不現實的,但儘管如此,如果有辦法做到這一點,你知道,那麼請幫助我。
貌似http://stackoverflow.com/questions/145312/maximum-number-of-threads-in-a-net-app – holtavolt 2011-06-07 14:18:01
的副本如果 「跑」 你意味着線程之間的顛簸...... hehe – 2011-06-07 14:19:13
我很抱歉,我沒有澄清目的太好。我的設置是服務器 - 客戶端設置。我想強調客戶端而不是服務器。在設置中,進程向客戶端進程發出請求,客戶端進程將依次將請求轉發給要服務的服務器。 但我明白了我們都在接受的觀點,即在一臺機器上創建這些多線程是不現實的,不推薦使用。 此外,我打算讓這些線程每1分鐘至少執行一次,從而給客戶端造成壓力的動機似乎是太想要了! :( – 2011-06-07 17:30:33