L’époque de steady_clock est-elle relative au démarrage du système d’exploitation? ou au processus lui-même?

L’utilisation de boost::chrono::steady_clock ou std::chrono::steady_clock est std::chrono::steady_clock garantir que l’heure physique est toujours monotone et n’est pas affectée par les changements d’heure de la date dans le système. Voici ma question, si j’ai deux processus qui doivent être immunisés contre les changements d’heure de date du système, est-ce suffisant pour échanger juste le time_since_epoch ? En d’autres termes, l’interprétation temporelle des deux processus au même moment depuis l’époque sera la même? Plus précisément, je dois répondre à cette question pour Windows et QNX.

EDIT: Les deux processus s’exécutent sur le même ordinateur, le même système d’exploitation et communiquent via des appels IPC.

Non, les temps ne sont pas interchangeables entre les systèmes, car C ++ ne spécifie pas l’époque. L’époque dépend du système d’exploitation, différents systèmes peuvent avoir différentes époques.

Si, par contre, vous ne partagez les temps que localement, dans le même système, alors ça va.

Le standard C ++ dit à propos de steady_clock :

20.12.7.2 Classe steady_clock [time.clock.steady]

Les objects de classe steady_clock représentent des horloges pour lesquelles les valeurs de time_point ne diminuent jamais à mesure que le temps physique avance et pour lesquelles les valeurs de time_point avancent à un rythme constant par rapport au temps réel. C’est-à-dire que l’horloge peut ne pas être ajustée.

Comparez cela à ce que le standard a à dire sur system_clock :

20.12.7.1 Classe system_clock [time.clock.system]

Les objects de la classe system_clock représentent l’heure de l’horloge murale à partir de l’horloge temps réel à l’échelle du système.

Il n’est pas question que steady_clock soit “à l’échelle du système”, ce qui m’amène à penser que, selon le standard C ++, on ne peut pas faire confiance à deux steady_clocks dans différents processus sur la même machine ayant la même époque.