Globaali muuttuja ohjelmoinnissa on muuttuja , jonka laajuus kattaa koko ohjelman, ellei ohita sitä . Mekanismeja vuorovaikutuksessa globaalien muuttujien kanssa kutsutaan mekanismiksi pääsyn globaaliin ympäristöön tai tilaan ( globaali ympäristö , globaali tila ) . Globaalimuuttujia voidaan käyttää proseduurien ja funktioiden väliseen vuorovaikutukseen vaihtoehtona argumenttien välittämiselle ja arvojen palauttamiselle [1] .
Globaalimuuttujien käytössä on haittoja: globaalia muuttujaa voidaan muuttaa missä tahansa ohjelman kohdassa (jos se ei ole suojatussa muistissa tai ilmoitettu vain luku -muuttujaksi ), mikä voi vaikuttaa ohjelman muiden osien toimintaan. ohjelma [2] . Tästä syystä globaaleilla muuttujilla on rajoittamaton potentiaali luoda keskinäisiä riippuvuuksia, mikä johtaa ohjelman monimutkaisuuteen. Joissakin tapauksissa on kuitenkin hyödyllistä käyttää globaaleja muuttujia. Niitä voidaan esimerkiksi käyttää välttämään usein käytettyjen muuttujien välittämistä useiden funktioiden läpi. Globaalit muuttujat vaikeuttavat myös moduulien integrointia, koska aiemmin kirjoitettu koodi saattaa sisältää globaaleja muuttujia, joilla on sama nimi kuin upotettavassa moduulissa.
Globaalimuuttujia käytetään laajalti tietojen siirtämiseen sellaisten koodin osien välillä, jotka eivät osallistu puhelusuhteisiin, kuten rinnakkaiset suoritussäikeet tai signaalinkäsittelijät . Ilman asianmukaista lukitusta (esimerkiksi mutexilla ) globaaleja muuttujia käyttävä koodi ei ole säikeen varma, paitsi suojatun muistialueen vain luku -muuttujat . Muuttujien ja vastaavasti lukkiutumisen lisääntyessä lukkiutumien todennäköisyys kasvaa .
Esimerkki C :ssä :
int a ; /* Globaalin kokonaislukumuuttujan "a" ilmoittaminen */ kelluke b = 6 ; /* Ilmoitetaan globaali liukulukumuuttuja "b" ja annetaan sille arvo "6" */ int main ( tyhjä ) { a = 12_ _ /* Asetetaan muuttujalle "a" arvo "12" */ palauttaa a + b ; }