Причем разница огромная, вплоть до 10 раз!
На 4-ехядерном процессоре нижеприведенная программа при низком проиритете процесса выполняется от 800 мс до 1600, в то время как при высоком - не было меньше 9 секунд
Как объяснить это неожидаемое поведение?
PS. Приоритет менял в диспетчере задач, проверял много раз в Release-конфигурации без VS, Windows 10
using System;
using System.Diagnostics;
using System.Threading;
namespace LoadTest
{
class Test
{
const int n = 1000;
static int count = 0;
const int stepCount = 10;
static AutoResetEvent are = new AutoResetEvent(false);
static ManualResetEvent mre = new ManualResetEvent(false);
static AutoResetEvent areEnd = new AutoResetEvent(false);
static void Main(string[] args)
{
while (true)
{
char action = Console.ReadKey().KeyChar;
switch (action)
{
case 't': Threads(); break;
}
are.Reset();
mre.Reset();
areEnd.Reset();
}
}
static void Threads()
{
Thread[] ts = new Thread[n];
for (int i = 0; i < n; i++)
{
ts[i] = new Thread(CPU);
ts[i].Start();
}
are.WaitOne();//все потоки готовы
var sw = Stopwatch.StartNew();
mre.Set();//начать расчет
areEnd.WaitOne();//расчет окончен
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
static void CPU(object i)
{
Interlocked.Increment(ref count);
if (count == n) are.Set();//оповещаем что все потоки созданы
mre.WaitOne();//ждем создания всех потоков
Simple();
Interlocked.Decrement(ref count);
if (count == 0) areEnd.Set();//оповещаем о завершении всех потоков
}
static void Simple()
{
for (int j = 0; j < stepCount; j++)
Console.WriteLine(j);
}
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Добрый деньИмеется код, объединяющий два изображения в одно:
Приложение написано с использованием WinFormsПри установке свойства:
Я новичок в c#, пишу небольшую игруЕё цель ставить звездочки так, чтобы их задело рандомно перемещающееся НЛО