Секундомер .Net с поддержкой многоядерных процессоров и потоков?

Как мы все знаем, секундомер может иметь проблемы в многопоточном асинхронном приложении, которое будет работать на всех ядрах.

На многопроцессорном компьютере не имеет значения, на каком процессоре выполняется поток. Однако из-за ошибок в BIOS или уровне аппаратной абстракции (HAL) вы можете получить разные результаты синхронизации на разных процессорах. Чтобы указать привязку процессора к потоку, используйте метод ProcessThread.ProcessorAffinity.

Есть ли у меня какой-либо способ получить какие-то надежные тики / временные метки, такие как значения, которые имеют высокое разрешение / точность, а также согласованы между ядрами ЦП?

Если невозможно сделать секундомер (QueryPerformanceCounter) многоядерным, безопасным, каков следующий лучший способ получить хорошую временную метку по ядрам? DateTime.UtcNow.Ticks или Environment.TickCount ? Какие-нибудь другие счетчики?

Мне нужно лучшее разрешение, чем то, что может предоставить DateTime.UtcNow.Ticks. (10-15 мс)

14
задан Sam 18 June 2014 в 15:21
поделиться