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.


Anmelden zum Antworten