Zeitpunkt der Inline-Instanziierung statischer C++17-Mitglieder: Verzögerte Instanziierung oder vor main()?C++

Programme in C++. Entwicklerforum
Guest
 Zeitpunkt der Inline-Instanziierung statischer C++17-Mitglieder: Verzögerte Instanziierung oder vor main()?

Post by Guest »

Ich definiere ein statisches Inline-Datenelement in einer C++17-Klasse (

Code: Select all

inline static SharedData gSharedData;
).
Ich habe zwei Fragen:
1)Es scheint, dass gSharedData instanziiert wurde bevor main() beginnt wie (

Code: Select all

non-inline static
Mitglied) und ist keine verzögerte Initialisierung (erste Verwendung von Idiom). Der folgende Code bestätigt dies. Ist dies bei statischen Inline-Variablen immer der Fall?
2)In einem Projekt, an dem ich arbeite (eine große Codebasis mit gemeinsam genutzten Bibliotheken), das dem folgenden Code ähnelt, habe ich Im Gegensatz zur Ausgabe des folgenden Codes beobachte ich mehrere Konstruktoraufrufe von verschiedenen Threads, wobei jeder eine andere Adresse ausgibt – was darauf hindeutet, dass mehr als eine Instanz erstellt wird! Soweit ich weiß, ist die Instanziierung statischer Variablen seit C++11 threadsicher. Irgendwelche Gedanken oder Ideen, warum zwei Threads dasselbe statische Inline-Mitglied instanziieren ?

Code: Select all

#include 
#include 
class SharedData {
public:
SharedData() {
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post