Как увеличить количество потоков и при этом не замедлять программу
Необходимо что бы потоки выводились по порядку и это код
using System.Threading;
class MyThread {
public int Count;
public Thread Thrd;
public MyThread(string name) {
Count = 0;
Thrd = new Thread(this.Run);
Thrd.Name = name;
Thrd.Start() ;
}
void Run() {
Console.WriteLine(Thrd.Name + " начат.");
do {
Thread.Sleep (500);
Console.WriteLine("В потоке " + Thrd.Name + ", Count = " + Count);
Count++;
} while(Count < 10);
Console.WriteLine(Thrd.Name + " завершен.");
}
}
class MoreThreads {
static void Main() {
Console.WriteLine("Основной поток начат.");
MyThread mt1 = new MyThread("Поток 1");
MyThread mt2 = new MyThread("Поток 2");
MyThread mt3 = new MyThread("Поток 3");
do {
Console.Write(".");
Thread.Sleep(100) ;
} while (mt1.Count <10 ||
mt2.Count <10 ||
mt3.Count < 10);
Console.WriteLine("Основной поток завершен.");
}
}
Был доработан
using System.Threading;
class MyThread {
public int Count;
public Thread Thrd;
public int number;
public MyThread(int number) {
Count = 0;
this.number = number;
Thrd = new Thread(this.Run);
Thrd.Name = "Поток " + number;
Thrd.Start();
}
void Run() {
Console.WriteLine(Thrd.Name + " начат.");
do {
Thread.Sleep(number * 100);
Console.WriteLine("В потоке " + Thrd.Name + ", Count = " + Count);
Count++;
Thread.Sleep(500 - (number * 100));
} while(Count < 10);
Console.WriteLine(Thrd.Name + " завершен.");
}
}
public class MoreThreads {
public static void Main() {
Console.WriteLine("Основной поток начат.");
MyThread mt1 = new MyThread(1);
MyThread mt2 = new MyThread(2);
MyThread mt3 = new MyThread(3);
do {
Console.Write(".");
Thread.Sleep(100) ;
} while (mt1.Count < 10 ||
mt2.Count < 10 ||
mt3.Count < 10);
Console.WriteLine("Основной поток завершен.");
}
}
И теперь потоки возводятся по порядку поток 1 Поток 2 Поток 3
поток 1 Поток 2 Поток 3 А не :
поток 3 Поток 2 Поток 1
поток 2 Поток 3 Поток 1
Но если выводить большее количество потоков к примеру 10
То время выполнения будет расти
Вопрос : как организовать программу так что бы выводя большое количество потоков по порядку 1. 2. 3. 1. 2. 3. Не увеличевать время выполнения. Т.е. мое решение для упорядоченного вывода потоков создаёт проблему при увеличении количества потоков.
P.s. надеюсь проблему изъявил доходчиво.