std :: thread :: hardware_concurrency und statische Initialisierung

8

Darf diese globale Funktion unter statischem Initialisierungsfiasko leiden?

%Vor%     
metalfox 06.06.2016, 06:38
quelle

1 Antwort

7
  

Darf diese globale Funktion unter statischer Initialisierung leiden?

Nein, würde es nicht. Du bist sicher ...: -)

Zitieren des C ++ Standardentwurfs (Hervorhebung meins) ...

  

$ 6.7: 4: Dynamische Initialisierung einer Block-Scope-Variablen mit   Statische Speicherdauer ([basic.stc.static]) oder Threadspeicher   Dauer ([basic.stc.thread]) wird beim ersten Mal ausgeführt   geht durch seine Erklärung; Eine solche Variable wird berücksichtigt   nach Abschluss der Initialisierung initialisiert. Wenn die   Initialisierung beendet durch Auslösen einer Ausnahme, die Initialisierung ist   nicht vollständig, so dass es beim nächsten Mal, wenn die Steuerung eintritt, erneut versucht wird   die Erklärung. Wenn das Steuerelement gleichzeitig die Deklaration eingibt   während die Variable initialisiert wird, die gleichzeitige Ausführung   muss auf den Abschluss der Initialisierung warten

Siehe auch: Statische lokale Variablen

Da Ihre Funktion eine Funktionsvorlage template <typename TFn> ist, wird TFn für jede separate Instanziierung (Substitution von static const unsigned int NThread = std::thread::hardware_concurrency(); ) ausgewertet

    
WhiZTiM 06.06.2016, 06:46
quelle