Я пытаюсь протестировать просто разработанный фрагмент кода на Microsoft HPC. Похоже, задание не завершает весь код. Мой метод тестирования может быть неправильным. Я просто распечатываю некоторые контрольные точки. Вот код:
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
class S
{
static void Main()
{
pcount = Environment.ProcessorCount;
Console.WriteLine("Proc count = " + pcount);
ThreadPool.SetMinThreads(4, -1);
ThreadPool.SetMaxThreads(4, -1);
// System.Threading.Thread.Sleep(20000);
Console.WriteLine("check point 0 ");
t1 = new Task(A, 1);
t2 = new Task(A, 2);
t3 = new Task(A, 3);
t4 = new Task(A, 4);
Console.WriteLine("Starting t1 " + t1.Id.ToString());
t1.Start();
Console.WriteLine("Starting t2 " + t2.Id.ToString());
t2.Start();
Console.WriteLine("Starting t3 " + t3.Id.ToString());
t3.Start();
Console.WriteLine("Starting t4 " + t4.Id.ToString());
t4.Start();
// Console.ReadLine();
}
static void A(object o)
{
Console.WriteLine("check point A ");
B(o);
}
static void B(object o)
{
int temp = (int)o;
Console.WriteLine("check point B ");
if (temp == 1)
{
C(o);
}
else
{
F(o);
}
}
static void C(object o)
{
Console.WriteLine("check point C ");
D(o);
}
static void D(object o)
{
int temp = (int)o;
Console.WriteLine("check point D " + temp);
if (temp == 2)
{
F(o);
}
else
{
E(o);
}
}
static void E(object o)
{
Console.WriteLine("check point E ");
}
static void F(object o)
{
Console.WriteLine("check point F ");
G(o);
}
static void G(object o)
{
Console.WriteLine("check point G ");
}
static Task t1, t2, t3, t4;
static int pcount;
}
В выводе задания не печатается до конца. Распечатка заканчивается случайным образом в любой точке (в случайной функции). Хорошо, я понимаю, что он может не распечатать все, так как выполнение выполняется быстрее, чем печать (возможное объяснение). Но если я попытаюсь разместить точки останова и попытаться выполнить отладку, подключившись к процессу, он попадет только в точки останова в первых частях кода. Похоже, попадание в тот же диапазон, что и тестовая распечатка. Как я могу убедиться, что код выполняется до конца, чтобы точки останова можно было сбить в любой момент?