Глобальная переменная

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

В программировании глобальной переменной называют переменную, областью видимости которой является вся программа (кроме затенённых (англ.) областей). Механизмы взаимодействия с глобальными переменными называют механизмами доступа к глобальному окружению или состоянию (англ. global environment, англ. global state). Глобальные переменные могут использоваться для взаимодействия между процедурами и функциями как альтернатива передачи аргументов и возвращения значений[1].

Использование глобальных переменных имеет недостатки: глобальная переменная может быть изменена в любой точке программы (если она не находится в защищённой памяти или объявлена как переменная только для чтения (англ.)), что может повлиять на работу других частей программы[2]. По этой причине глобальные переменные имеют неограниченный потенциал для создания взаимных зависимостей, что приводит к усложнению программы. Однако в некоторых случаях бывает полезно использовать глобальные переменные. Например, они могут быть использованы, чтобы избежать необходимости прохода часто используемых переменных через несколько функций. Глобальные переменные также затрудняют интеграцию модулей, поскольку код, написанный ранее, может содержать глобальные переменные с теми же именами, что и во встраиваемом модуле.

Глобальные переменные широко используются для передачи данных между секциями кода, которые не участвуют в отношениях вызовов, такие как параллельные нити исполнения или обработчики сигналов. Без надлежащей блокировки (например, с помощью мьютекса), код, использующий глобальные переменные, не будет потокобезопасным, за исключением переменных, доступных только для чтения (англ.) в защищённой области памяти. С увеличением количества переменных и, соответственно, блокировок увеличиваются вероятность взаимных блокировок.

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

  1. Керниган и Ритчи Язык программипования Си — С. 44, 87.
  2. William Wulf and Mary Shaw, “Global Variable Considered harmful”, ACM SIGPLAN Notices, volume 8, issue 2, 1973 February, С. 28–34.

Ссылки[править | править исходный текст]