QueryPerformanceCounter()
и Stopwatch.GetTimestamp()
оба возвращают количество отсчетов от одного из процессоров. Я хотел бы использовать возвращаемое 64-битное целочисленное значение как уникальный идентификатор, и мне интересно, возможно ли, что эти функции возвращают одно и то же значение, когда они вызываются несколько раз в процессе.Может ли QueryPerformanceCounter() или Stopwatch.GetTimestamp() возвращать одно и то же значение в последующих вызовах?
Мой процесс будет работать в течение нескольких часов максимум за раз, и эти уникальные идентификаторы используются только временно - они не сохраняются в базе данных, например. Вышеупомянутые функции будут вызываться несколько раз, но с другими вызовами функций между ними.
В документации указывается, что материнская плата не поддерживает высокопроизводительные таймеры, но все, с чем я работал, имели эту поддержку. Мой код будет работать только на 32-битном или 64-битном серверном оборудовании, где я считаю, что высокопроизводительные таймеры всегда поддерживаются (хотя я не уверен, хотя).
Я мог бы написать небольшую тестовую программу для тестирования, но этот тест будет действителен только на моем собственном компьютере, поэтому я ищу более окончательный ответ, если он доступен.
Edit: Я знаю, что эти функции не предназначены для генерации уникальных идентификаторов, но до тех пор, как они порождают все большее значение, это нормально. Я задаю этот вопрос не только по техническим причинам, но и из любопытства.
Я знаю, что они не * разработаны * tp возвращают уникальные идентификаторы, но если они возвращают постоянно возрастающие значения, это нормально. Почему вы говорите, что они, вероятно, вернут одинаковые ценности? – xxbbcc
Оба показывают текущее значение таймера - 2 последующих звонка, чтобы показать одно и то же «время» - запустить образец в отредактированном ответе, чтобы увидеть результаты. –
@xxbbcc, когда это тривиально простые в использовании методы, предназначенные для генерации уникальных идентификаторов, почему бы вам избежать использования методов, которые не предназначены для этого? – Yaur