ВУЗ:
Составители:
Рубрика:
15
Имеются следующие потоковые модели :
• Однопоточная (Single). Весь COM-сервер (т.е. все создаваемые им экзем -
пляры объектов ) выполняется в одном потоке.
• Раздельная (apartment). Эту модель также называют однопоточно -
раздельной (singlethreaded apartment, STA). Каждый экземпляр объекта
выполняется в своем собственном потоке . Локальные данные потоков
при этом защищены автоматически . Любые глобальные переменные, со -
вместно используемые несколькими экземплярами объекта , должны за-
щищаться самостоятельно с помощью методов синхронизации (семафо-
ров , критических секций и др.)
• Свободная (Free). Иначе называется многопоточно- раздельной (multi-
threaded apartment, MTA). Клиент может вызвать метод объекта в любом
потоке в любое время. Объекты должны самостоятельно защищать также
и свои локальные данные от одновременного доступа из нескольких по-
токов .
• Обе модели (Both). Поддерживаются обе предыдущие модели .
Использовать две последних модели без особой необходимости не рекоменду-
ется, так это чревато возникновением ошибок.
Более подробно с вопросами многопоточности в COM можно ознакомиться по
книге [2].
2. Примеры программирования
2.1. Создание внешнего сервера и контроллера автоматизации
2.1.1. Создание сервера
Откройте новый проект . Измените заголовок и имя формы – Сервер запущен,
MainForm.
Сохраните проект (имя Sa.dpr) и модуль (имя SrvMain).
Назначение этого проекта – запуск сервера и отображение полученных им от
клиента данных. В адресном пространстве сервера (sa.exe) по запросу клиента
будет создаваться COM-объект.
В общем случае исходный проект может содержать процедуры и методы, ко -
торые на следующем шаге можно включить в состав интерфейсов , т.е. преобра -
зовать исходную программу в COM-сервер.
15 И мею тсяслед ую щ и епотоков ы емод ели : • О д нопоточная (Single). В есь COM-сервер(т.е. в сесоз д ав аемы еи м экзем- пляры объектов ) в ы полняетсяв од ном потоке. • Раз д ельная (apartment). Э ту мод ель такж е наз ы в аю т од нопоточно- раз д ельной (singlethreaded apartment, STA). К аж д ы й экземпляр объекта в ы полняется в св оем собств енном потоке. Л окальны е д анны е потоков при этом з ащ и щ ены ав томати чески . Л ю бы е глобальны е переменны е, со- в местно и спольз уемы е нескольки ми экземплярами объекта, д олж ны з а- щ и щ аться самостоятельно с помощ ью метод ов си нхрони з аци и (семафо- ров , кри ти чески х секци й и д р.) • Св обод ная (Free). И наче наз ы в ается многопоточно-раз д ельной (multi- threaded apartment, MTA). К ли ент мож ет в ы з в ать метод объекта в лю бом потокев лю боев ремя. О бъекты д олж ны самостоятельно з ащ и щ ать такж е и св ои локальны е д анны е от од нов ременного д оступа и з нескольки х по- токов . • О бемод ели (Both). Под д ерж и в аю тсяобепред ы д ущ и емод ели . И спольз ов ать д в епослед ни х мод ели без особой необход и мости нерекоменд у- ется, такэто чрев ато в оз ни кнов ени ем ош и бок. Болеепод робно с в опросами многопоточности в COM мож но оз накоми тьсяпо кни ге[2]. 2. П ри м е ры програм м и ров ани я 2.1. Создани е в не ш не госе рв е ра и к онт ро лле ра ав т о м ат и заци и 2.1.1. Соз д ани есервера О ткрой тенов ы й проект. И з мени тез аголов оки и мя формы –Серверз апущ ен, MainForm. Сохрани тепроект(и мяSa.dpr) и мод уль (и мяSrvMain). Н аз начени е этого проекта – з апусксервера и отображ ени е полученны х и м от кли ента д анны х. В ад ресном пространств е сервера (sa.exe) по з апросу кли ента буд ет соз д ав атьсяCOM-объект. В общ ем случае и сход ны й проект мож ет сод ерж ать процед уры и метод ы , ко- торы ена след ую щ ем ш агемож но в клю чи ть в состав и нтерфей сов , т.е. преобра- з ов ать и сход ную программу в COM-сервер.
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »