Threads und globale Variablen
-
Hallo,
ich habe eine globale Variable int a=3
wenn ich dann einen Thread mit CreateThread mache, in diesem Thread a=2 setze und dann a mit printf ausgebe schreibt er natürlich 2.
wenn ich danach aber in main mit printf a ausgebe ist a immernoch 3.
woran liegt das ? ändert es was, wenn ich statt CreateThread _beginthread benutze?
cu
-
Nein. _beginthread soltest du aber trotzdem immer benutzen. Außer du weißt ganz genau, was du tust, sprich: Du rufst keine einzige C/C++ Standard-Funktion auf.
Genau das tust du aber mit printf. Daher ist CreateThread einfach nur falsch.Deklarier die Variable mal als volatile:
volatile int a;
Das sagt dem Compiler, dass er die nicht wegoptimieren darf.