Java >> Java tutorial >  >> Tag >> volatile

En ækvivalent til Java volatile i Python

Så vidt jeg ved, når vi bruger flygtig, mens vi erklærer en variabel, vil enhver ændring af værdien af ​​denne variabel være synlig for alle tråde, der kører på samme tid.

volatile er lidt mere nuanceret end som så. volatile sikrer, at Java gemmer og opdaterer variabelværdien i hovedhukommelsen . Uden volatile , er JVM'en fri til at gemme værdien i CPU-cachen i stedet, hvilket har bivirkningen af opdateringer af værdien er usynlige for forskellige tråde, der kører på forskellige CPU-kerner (tråde, der køres samtidigt på den samme kerne ville se værdien).

Python gør aldrig dette. Python gemmer alle objekter på en bunke, i hovedhukommelsen. Desuden, på grund af hvordan Python-fortolkerens loop bruger låsning (GIL), vil kun én tråd ad gangen aktivt køre Python-kode. Der er aldrig en chance for, at forskellige tråde kører en Python-fortolkerløkke på en anden CPU.

Så du behøver ikke bruge volatile i Python er der ikke noget sådant koncept, og du behøver ikke bekymre dig om det.


Java tag