race condition એ એક bug છે જ્યાં પરિણામ shared state ને access કરતાં concurrent operations ના અણધાર્યા timing પર આધાર રાખે છે. ઉત્તમ કિસ્સો એક read-modify-write છે જે atomic નથી.
તે કેવી રીતે કામ કરે છે
counter += 1 atomic લાગે છે પણ ખરેખર ત્રણ steps છે: read, add, write. બે threads એવી રીતે interleave કરી શકે કે એક update ગુમ થાય.
counter = 0
Thread A: read 0 ─────────── write 1
Thread B: read 0 ─ write 1
Result: 1 (should be 2 — one increment lost)
