4.6 Потоконезависимые переменные

На верх  Назад  Вперёд

Для программы, которая использует потоки, переменные могут быть действительно глобальными, то есть такими же самыми для всех потоков, или локальными для потока: это означает, что каждый поток получает копию переменной. Локальные переменные (определенные в процедуре) всегда локальны для потока. Глобальные переменные, как правило, одинаковы для всех потоков. Глобальная переменная может быть объявлена локальной для потока, заменой ключевого слова var в начале блока объявления переменной на Threadvar:

Threadvar

  IOResult : Integer;

Если потоки не используются, переменная ведет себя как обычная переменная. При использовании потоков, делается копия для каждого из них (включая основной поток). Отметьте, что копия сделана с исходным значением переменной, не со значением переменной в то время, когда поток запущен.

Threadvars должен использоваться экономно: есть издержки для получения или установки значения переменной. Если возможно, рассмотрите использование локальных переменных; они всегда быстрее чем потоковые переменные.

Потоки не включены по умолчанию. Для получения дополнительной информации о программировании потоков, см. главу по потокам в Справочник программиста Free Pascal.