Если у меня есть общий экземпляр System.Diagnostics.Stopwatch
, могут ли несколько потоков вызывать shared.ElapsedTicks
в безопасным способом и получить точные результаты?
Есть ли разница с точки зрения безопасности потоков / точности между использованием общего экземпляра секундомера таким способом и статическим методом GetTimeStamp ()
?
Я измеряю интервалы около 180 мс и обнаружил, что использование общего экземпляра дает мне больший разброс результатов, включая значительное число, которое короче, чем я ожидал.
Машина имеет несколько процессоров (2 * Intel X5550, чего он стоит)
Для добавления к другим ответам здесь, в то время как это свойство является theadsafe, пока Вы не звоните Start()
, Reset()
, или Stop()
методы, важно отметить, что, если Вы используете галочки для арифметики и затем передаете значение в TimeSpan
конструктор, например, один stopWatch.ElapsedTicks
, Галочка не эквивалентна TimeSpan
Галочки, как описано здесь. Для получения эквивалентных галочек Вы хотели бы использовать stopWatch.Elapsed.Ticks
.
оставил бы это как комментарий к другому ответу, но у меня нет достаточной репутации: /