Как разбить программу на потоки?
Нам дали задание: Написать многопоточную программу (количество потоков должно соответствовать возможному количеству потоков для вычислительной машины). Программа: Разложение каждого числа от 1 до N на простые множетели (я записываю множетели в List)
private static int GetPrimalDevideNumber(int number)
{
for (int i = 2; i < number * number; i++)
{
if (number % i == 0)
{
return i;
}
}
return 1;
}
private static List<int> Decomposition(int number)
{
List<int> primalNumbers = new List<int>();
primalNumbers.Add(1);
while (number != 1)
{
int primalNum = GetPrimalDevideNumber(number);
primalNumbers.Add(primalNum);
number /= primalNum;
}
return primalNumbers;
}
private static int ReadIntegerNumberFromConsole()
{
return Convert.ToInt32(Console.ReadLine());
}
static void Main(string[] args)
{
int n = ReadIntegerNumberFromConsole();
for (int i = 1; i < n+1; i++)
{
Console.Write(i + ": ");
foreach (var primalNumber in Decomposition(i))
{
Console.Write(primalNumber + " ");
}
Console.WriteLine();
}
}
}
И в общем, как это можно разбить на потоки? Чтобы каждый поток выполнял паралелльно метод Decomposition? То есть мне нужно заранее создать массив потоков, дабы в for я проходился по каждому, давая новое значение, а как тогда поток будет действовать если он еще не успел выполнить Decomposition а я уже поручаю ему выполнить метод опять с новым значением?