Автор Тема: 2.0.2.2-Спецификатор внутреннего типа Shared.  (Прочитано 1902 раз)

Оффлайн linker

  • Модератор
  • Пользователь
  • *****
  • Сообщений: 71
  • Reputation: +1/-0
    • Просмотр профиля
Спецификатор внутреннего типа Shared.

Для получения доступа к переменной внутри процедуры, объявленной в другом потоке, применяется оператор Shared.
  • string$="string"      ;задать значение переменной
  • Procedure String()
  • Shared string$   ;предоставить доступ к переменной внутри процедуры
  • Debug string$   ;теперь переменная string$ доступна и в процедуре
  • string$="changed string"   ;присвоить переменной новое значение
  • EndProcedure
  • Debug string$
  • String()
  • Debug string$      ;вывод измененного процедурой значения переменной

Изменив значение переменной в процедуре, изменится её значение и в основном потоке и в других процедурах с предоставленным к ней доступом, так как при использовании этих переменных не создается новый экземпляр в памяти, а используется ранее объявленный, закрепленный за переменной основного потока.
Применение оператора Shared допускается только внутри процедур, доступ предоставляется только к переменным основного потока и только до первого вызова переменной внутри процедуры, к которой необходимо открыть доступ. Следующий пример вызовет ошибку, потому что единожды вызванная переменная string$ уже имеет новый экземпляр в памяти, отличный от экземпляра переменной основного потока.

  • string$="string"      ;задать значение переменной
  • Procedure String()
  • Debug string$   ;единожды вызванная переменная string$
  • Shared string$   ;предоставить доступ к переменной невозможно
  • EndProcedure
  • String()

Все примеры написаны и проверены на языке высокого уровня PureBasic v4.31.
Дата составления 14 июля 2009 г.
©Copyright LOMASM - Информационные технологии. Все права защищены. Редактирование и публикация материала только с разрешения автора.
lomasm.ru