Dekuji vsem za odpovedi.
Par poznamek:
1) Kdyby bylo po mem, staticky (tj. na stacku) bych naalokoval vse v mainu, predaval referenci v konstruktoru (umoznuje dependency injection) a zajistil graceful shutdown. Po mem ale bohuzel neni, ponevadz manazer lpi na globalni promenne (kvuli egu a protoze C++ nerozumi). Ja bych delal spoustu veci jinak.
2) Inicializace statickych, block-scoped promennych je skutecne thread-safe. Vygooglete si nasledujici vetu v C++ standardu:
If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization
Tenhle singleton taktez nese jmeno Scotta Meyerse:
https://laristra.github.io/flecsi/src/developer-guide/patterns/meyers_singleton.html. Soudim tedy, ze je to safe.
3) Rozumim-li spravne postu o kompilacnim flagu, pak je to nejspis toto:
-fno-threadsafe-statics
Do not emit the extra code to use the routines specified in the C++ ABI for thread-safe initialization of local statics. You can use this option to reduce code size slightly in code that doesn’t need to be thread-safe.
Z toho mi plyne, ze tento flag
vypina thread-safety, tudiz defaultne je to safe.
Ale abych se vratil k otazce.
Trochu to prezenu, abych zduraznil absurditu
Je mozne pristoupit k objektu na heap po korektnim zniceni cele heap v bezicim procesu? Tj. dobehnou vlakna, znici se heap a TED je ten okamzik
Muze v tomto bode jeste napriklad bezet detached vlakno?
Lze to same udelat s korektne - na konci programu - dealokovanou statickou promennou?
Pokud nikoliv, vubec neni potreba tridu
Sluzby dynamicky alokovat a uz vubec managovat ji nebo jeji membery pomoci
std::shared_ptr.
A sem se snazim celou dobu dostat. Respektive, chci vedet, jestli neco neopomijim.