4.6 Потоконезависимые переменные |
Вверх Предыдущий Следующий |
Для программы, которая использует потоки, переменные могут быть действительно глобальными, то есть такими же самыми для всех потоков, или локальными для потока: это означает, что каждый поток получает копию переменной. Локальные переменные (определенные в процедуре) всегда локальны для потока. Глобальные переменные, как правило, одинаковы для всех потоков. Глобальная переменная может быть объявлена локальной для потока, заменой ключевого слова var в начале блока объявления переменной на Threadvar: Threadvar IOResult : Integer; Если потоки не используются, переменная ведет себя как обычная переменная. При использовании потоков, делается копия для каждого из них (включая основной поток). Отметьте, что копия сделана с исходным значением переменной, не со значением переменной в то время, когда поток запущен. Threadvars должен использоваться экономно: есть издержки для получения или установки значения переменной. Если возможно, рассмотрите использование локальных переменных; они всегда быстрее чем потоковые переменные. Потоки не включены по умолчанию. Для получения дополнительной информации о программировании потоков, см. главу по потокам в Справочник программиста Free Pascal. |