|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
16.5 Синхронные и асинхронные вызовы методовСинхронные, полусинхронные и асинхронные вызовы методов в скриптах WMI на VBScript По умолчанию все методы в скриптах WMI вызываются синхронно, то есть пока не завершится выполнение одного метода, выполнение скрипта дальше не пойдет. Такое поведение наиболее логично и надежно, но иногда такой подход неприемлем с точки зрения производительности. При выполнении ресурсоемких операции, которые производятся сразу на многих компьютерах (например, получение десятков тысяч сообщений из журналов ошибок) выполнение операций желательно распараллелить, чтобы получить выигрыш во времени. Для этого методы можно запускать асинхронно, настроив предварительно соответствующий приемник события. Подробно об этом - в статье Making an Asynchronous Call Using The Scripting API в документации WMI SDK. Однако у асинхронных методов - свои недостатки. При использовании асинхронных вызовов все данные накапливаются в области, принадлежащей службе WMI и передаются ей только после полного их накопления. В результате: 1) скрипт, который мог бы обрабатывать поступающие данные, простаивает 2) если данных очень много, то их скопление может вызвать ошибки службы WMI, связанные с нехваткой памяти. Поэтому есть еще один вариант вызова методов - полусинхронный. Подробнее о нем - в статье Making a Semisynchronous call в документации. Основное преимущество использования полусинхронного метода - данные сразу же передаются вызвавшему метод скрипту (без накопления), основной признак использование такого подхода - использование для флагов WbemFlagReturnImmediately и WbemFlagForwardOnly вместе (получается значение 48, которое часто фигурирует в примерах скриптов). Для работы с асинхронными и полусинхронными операциями используется объект SWbemSink.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||