InterlockedIncrement



  • Hallo,

    ich habe eine einfache Frage:
    Ist den folgende Anweisung atomar?

    int myVar = 3; 
    int a = InterlockedIncrement(&myVar);
    

    Soweit ich das begreife ist nur das Increment auf myVar atomar, nicht aber die Zuweisung zu int a.

    Stimmt das?



  • Was ist InterlockedIncrement?

    Benutze std::atomic.



  • zambo123 schrieb:

    Soweit ich das begreife ist nur das Increment auf myVar atomar, nicht aber die Zuweisung zu int a.

    Stimmt das?

    Ja

    ps: Mir sind auch generell keine Befehle bekannt mit denen man zwei beliebige Variablen (=mit zwei nicht benachbarten, beliebigen Adressen) gleichzeitig atomar bearbeiten kann. Abgesehen mal von der "hardware transactional memory" Extension mit der man das mehr oder weniger machen kann. Wobei "mehr oder weniger" heisst: man muss dabei akzeptieren dass eine Transaktion abgebrochen werden kann, und den Code so auslegen dass er damit umgehen kann. Ist aber wieder ein ganz eigenes Thema.

    Und der Grund dass manni66 fragt was InterlockedIncrement ist ist dass du hier im falschen Forum postest. InterlockedIncrement ist nicht Teil der Standard C++ Library sondern eine Windows-Funktion.


Anmelden zum Antworten