C# 平行班实验

C# 平行班实验,c#,asp.net,multithreading,C#,Asp.net,Multithreading,我正在做一个涉及线程的实验,目前我正在使用并行类。我制作了一个获取数据的程序,我假设我们在不同的时间间隔中检索数据。如果我们要一个接一个地调用它们或同步调用它们,则经过的时间为9秒。但是如果我使用Parallel.Invoke,它可以节省时间(5秒),而且我认为效率更高,因为我们正在最大化服务器线程。我的问题是,这种方法好吗?还是有什么缺点?假设我对一个有20-30个用户(或更多)的web应用程序使用这种方法。(服务器应为平均规格或更低规格) 是的,当执行多个不受IO限制的操作(例如从另一个源获

我正在做一个涉及线程的实验,目前我正在使用并行类。我制作了一个获取数据的程序,我假设我们在不同的时间间隔中检索数据。如果我们要一个接一个地调用它们或同步调用它们,则经过的时间为9秒。但是如果我使用Parallel.Invoke,它可以节省时间(5秒),而且我认为效率更高,因为我们正在最大化服务器线程。我的问题是,这种方法好吗?还是有什么缺点?假设我对一个有20-30个用户(或更多)的web应用程序使用这种方法。(服务器应为平均规格或更低规格)


是的,当执行多个不受IO限制的操作(例如从另一个源获取数据)时,线程是一种流行的技术。谢谢Rob。因此,在30多个用户同时调用该方法时,使用Parallel.Invoke是安全的。
static void Main(string[] args)
{
    Stopwatch sw = new Stopwatch();
    sw.Start();
    bool output1 = false;
    bool output2 = false;
    bool output3 = false;

    //9 seconds
    //output1 = FetchData1();
    //output2 = FetchData2();
    //output3 = FetchData3();

    Parallel.Invoke(() => output1 = FetchData1(), () => output2 = FetchData2(), () => output3 = FetchData3());

    //Process(output1, output2, output3);
    Console.WriteLine(sw.ElapsedMilliseconds);
    sw.Stop();
    Console.ReadLine();
}

static bool FetchData1()
{
    //db call 
    System.Threading.Thread.Sleep(5000);
    Console.WriteLine("FetchData1");
    return true;
}

static bool FetchData2()
{
    //db call 
    System.Threading.Thread.Sleep(1000);
    Console.WriteLine("FetchData2");
    return true;
}

static bool FetchData3()
{
    //db call 
    System.Threading.Thread.Sleep(3000);
    Console.WriteLine("FetchData3");
    return true;
}