Что такое независимый от платформы способ получения уникального значения текущего экземпляра (например, pid) в C ++ - PullRequest
1 голос
/ 11 октября 2011

Я хотел бы получить какой-то (неважно, идентификатор процесса или что-нибудь) уникального целочисленного значения текущего экземпляра в C ++ независимым от платформы способом (что означает отсутствие #если #else макрос переключатель).

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

Есть ли способ достичь этого?

РЕДАКТИРОВАТЬ: Он не имеетбыть глобально уникальным.он просто должен быть уникальным для всей системы.

Ответы [ 4 ]

5 голосов
/ 11 октября 2011

Взгляните на Процесс повышения .Может быть именно то, что вы ищете.Если вы не хотите включать библиотеку, вы можете посмотреть, как реализована эта функциональность.

1 голос
/ 11 октября 2011

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

[C ++ 03]

Сам язык C ++ не предоставляет никакого механизма для этого,Фактически, сам C ++ ничего не знает о процессах или межпроцессном взаимодействии.Без использования специфической для платформы функциональности - либо откатанной вами вручную, что означает #ifdef s, либо в какой-либо кроссплатформенной библиотеке третьей части, такой как Boost, что также означает #ifdef s - это невозможно сделать.

... и ...

[C ++ 11]

Язык C ++ имеет базовую концепцию потоков, но не предоставляет механизма (который я вижу)создать механизм межпроцессного взаимодействия, так что вышеупомянутое все еще применяется.

1 голос
/ 11 октября 2011
1 голос
/ 11 октября 2011

Это может быть излишним, но взгляните на QUuid

...