C++03 kannte keine Threads und ging daher davon aus, dass alle Abläufe
grundsätzlich eine feste Reihenfolge haben. Bei Benutzung einer
Threadbibliothek musst du unter C++03 also durch selbst gesetzte Mutexe o.ä.
für eine geschützte Initialisierung sorgen.
Sichergestellt war und ist allerdings, dass globale statische Objekte
initialisiert werden, bevor die main-Funktion aufgerufen wird.
Noch zwei kleiner Verbesserungstipps:
1.) Wenn du deine Elementfunktion
LARGE_INTEGER freq()
umbenennst in einen Typumwandlungsoperator
operator LARGE_INTEGER ()
brauchst du sie nicht mehr explizit aufzurufen. Stattdessen ruft der
Compiler automatisch den Umwandlungsoperator auf, wenn er einen
LARGE_INTEGER braucht.
2.) Noch bequemer ist es, wenn du frequency gleich als LARGE_INTEGER
deklarierst und deine Klasse PCFreq im Konstruktor deren Initialisierung
durchführt. Dann musst du lediglich einmalig eine Instanz von PCFreq
anlegen, die du sofort wieder wegschmeißen kannst.
- Björn