| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Общая переменная для потоков |
| Автор: Витаминка 12.9.2007, 19:35 |
| Простите за глупый вопрос, но как создать общую переменную для всех потоков приложения? |
| Автор: Alexeis 12.9.2007, 19:40 |
| Да вроде не глупый. Такие переменные объявляются в специальной секции - ThreadVar |
| Автор: EvilsInterrupt 12.9.2007, 20:08 |
| Витаминка, Этот вопрос, хорошо освещен в мануале от SAP (Петрович). Я читаю его и там довольно таки здорово все это дело расписано ;) |
| Автор: Esperito 12.9.2007, 20:18 |
| В threadvar объявляется переменная, значение которой для каждого потока будет своё. А вот обычная глобальная переменная var будет общей. |
| Автор: MetalFan 12.9.2007, 20:26 |
но не потокобезопасной |
| Автор: Esperito 12.9.2007, 22:34 | ||
Совершенно верно. Однако неясно, что именно нужно автору |
| Автор: Витаминка 13.9.2007, 03:30 | ||||
Именно такая, но потокобезопасная. Если я возьму запись значения этой переменной в критическую секцию, она станет такой? |
| Автор: Felan 13.9.2007, 07:18 |
| Обязательно! ЗЫЖ Только в этом случае лучше сделать класс в котором будет инкапсулирована эта переменная и в котором будет обеспечиваться потокобезопасноть. Тогда можно будет, если что, без проблем добавить еще какую-нибудь переменную. Код, обеспечивающий потокобезопасность, будет в одном месте и в одном экземпляре. Намного проще поддержка. |
| Автор: Витаминка 13.9.2007, 08:05 | ||
Чуть проще пожалуста |
| Автор: Felan 13.9.2007, 08:17 | ||||
| Эх... да куда уж проще Вот пример. Доступ к переменной fSecondaryPayOnlyHrefStart только через потокобезопасные методы.
|
| Автор: MetalFan 13.9.2007, 08:26 | ||
както так:
и вообще советую посмотреть обертки в SyncObjs... |
| Автор: Витаминка 13.9.2007, 11:58 |
| О, спасибки! Этих примеров мне вполне хватит |