Иллюстрированный самоучитель по Kylix

       

Координация потоков



Координация потоков

При работе с потоками, на этапе первоначального знакомства с ними, неизбежны ошибки. Особенно неприятны ошибки, связанные с конфликтами потоков, обращающихся к разделяемым ресурсам, а также глобальным переменным. Также иногда бывает необходимо, чтобы потоки работали слаженно Например, после выполнения какого-либо события в одном потоке вам необходимо, чтобы возникало какое-либо постоянное событие в другом потоке. Все это можно объединить общим названием координации потоков. Рассмотрим, как можно эффективно управлять потоками для достижения каких-либо задач.

Для начала определим, какие способы хранения локальных переменных потока нам предоставляет Kylix. Таких способов три.

  • Хранение локальных переменных в стеке потока. Так как любой поток приложения получает свой стек, он будет иметь собственные локальные переменные.
  • Сохранение локальных переменных в объекте потомка класса Tthread.
  • Хранение локальных переменных на уровне операционной системы с использованием в описании локальных переменных слова threadvar.

Первый способ является самым простым, очевидным и самым эффективным. Доступ к локальным переменным, расположенным в стеке потока, самый быстрый.

Рассмотрим два других способа хранения локальных переменных потока. Второй способ проще и эффективнее чем третий (листинг 14.8).



Содержание раздела