( locsemege | 2021. 04. 09., p – 11:23 )

Szegről-végről idetartozik, nem nyitok újabb topic-ot, de nem tudom a választ. Mondjuk van egy 32 bites architektúránk és egy volatile int64_t x; változónk.  Valahol a programban legyen egy x++;, miközben becsap a megszakítás, abban meg legyen egy x = 0;. Az a kérdésem, hogy ez az x++ atomikus művelet? Vagy kell attól tartani, hogy az alsó 32 bit növelése után elfogadásra kerül a megszakítás, x == 0 lesz, majd visszatérést követően, ha épp volt átvitel a felső 32 bitre, akkor emiatt ez az átvitel x = 0x100000000 eredményt okoz?

Továbbá, ha atomikus, akkor minden egyes x-szel való művelet előtt globális IT tiltás, a végén pedig IT engedélyezés van?