C# 同时启动多个线程而不会减慢速度

C# 同时启动多个线程而不会减慢速度,c#,multithreading,loops,foreach,C#,Multithreading,Loops,Foreach,我知道这个问题无处不在,但我找不到适合我的 我试图在不减慢每个线程的速度的情况下同时启动10个线程 我的问题是,当我手动启动线程时,它们的速度非常快。但是如果我用循环启动它们,它们会非常慢 这就是它的快速之处: Thread tid1 = new Thread(new ThreadStart(Thread)); tid1.Start(); Thread tid2 = new Thread(new ThreadStart(Th

我知道这个问题无处不在,但我找不到适合我的

我试图在不减慢每个线程的速度的情况下同时启动10个线程

我的问题是,当我手动启动线程时,它们的速度非常快。但是如果我用循环启动它们,它们会非常慢

这就是它的快速之处:

            Thread tid1 = new Thread(new ThreadStart(Thread));
            tid1.Start();
            Thread tid2 = new Thread(new ThreadStart(Thread));
            tid2.Start();
            Thread tid3 = new Thread(new ThreadStart(Thread));
            tid3.Start();
            Thread tid4 = new Thread(new ThreadStart(Thread));
            tid4.Start();
            Thread tid5 = new Thread(new ThreadStart(Thread));
            tid5.Start();
            Thread tid6 = new Thread(new ThreadStart(Thread));
            tid6.Start();
            Thread tid7 = new Thread(new ThreadStart(Thread));
            tid7.Start();
            Thread tid8 = new Thread(new ThreadStart(Thread));
            tid8.Start();
            Thread tid9 = new Thread(new ThreadStart(Thread));
            tid9.Start();
            Thread tid10 = new Thread(new ThreadStart(Thread));
            tid10.Start();
我尝试过的慢方法:

1:

2:

任何帮助都将不胜感激


谢谢

经过一点修补,这个方法似乎很快:

List<Thread> threadlist = new List<Thread>();
for (int i = 0; i <= 10; i++)
    threadlist.Add(new Thread(new ThreadStart(wastetime)));

foreach (Thread t in threadlist)
    t.Start();
List-threadlist=new-List();

对于(int i=0;i),您正在调用构造函数ThreadStart。构造函数中有什么代码?构造函数必须在下一个线程开始之前完成执行。您通常想要实现什么?为什么需要同时启动它们“我有很多工作要做”这并不是一个问题的确切解释。使用
并行
功能肯定会达到预期的效果吗?您是否考虑过使用异步/等待任务(TPL)或线程池线程?使用普通线程虽然可能,但有点过时。而且,“更多线程”并不一定等于“更快”.你能解释一下这里的“快”和“慢”的意思吗?你有什么基准,什么是实际的可测量的结果,你想实现什么?这是VB.NET?是的,同样的:)是的,它只是线程。休眠几秒钟,以模拟一个长过程。
Parallel.ForEach(Enumerable.Range(1, 10), i => 
{
        Thread tid = new Thread(new ThreadStart(Thread));
        tid.Start();
});
List<Thread> threadlist = new List<Thread>();
for (int i = 0; i <= 10; i++)
    threadlist.Add(new Thread(new ThreadStart(wastetime)));

foreach (Thread t in threadlist)
    t.Start();