Cтраница 3
Если сбой происходит во время передачи, то за 2 с запускается запасной канал, который передает прерванное сообщение с самого начала. Восстановление основного канала занимает 23 7 с. После восстановления резервный канал выключается и основной канал продолжает работу с очередного сообщения. Сообщения поступают через 9 4 с и остаются в накопителе до окончания передачи. В случае сбоя передаваемое сообщение передается повторно по запасному каналу. [31]
Таким образом, программа не должна все время опрашивать мышь, клавиатуру и другие устройства в ожидании, не произошло ли чего-нибудь заслуживающего внимания. Поэтому программы для таких сред представляют собой цикл обработки сообщений: извлечь очередное сообщение, обработать его, если оно интересно, либо передать стандартному обработчику сообщений, обычно входящему в систему и представляющему собой стандартные действия системы в ответ на то или иное событие. [32]
Иногда мне кажется, что функция WndProc попадает в шквал сообщений, которые летят с такой скоростью, что от них буквально может помутиться рассудок. Вы можете почувствовать, как много сообщений WMJVfOUSEMOVE посылается в программу, изучив функцию KeyMouse OnMouseMove в действии. Помните, что всякий раз, когда на экране появляется новый набор координат мыши, очередное сообщение было обработано WndProc. Это все равно, как если бы оконная процедура пробиралась сквозь метель сообщений, обрушивающихся на нее со страшной силой. [33]
Программы подготовки к выдаче ( ППВт) формируют сообщения / п-го типа в зоне формуляров выдачи и осуществляют их перепись в буферную зону выдаваемых сообщений. При этом схемно формируется сигнал или записывается в оперативную память признак наличия подготовленного сообщения rn - го типа для i - ro абонента. Программы подготовки к выдаче определяют дисциплину заполнения буферных зон и в значительной степени дисциплину выдачи, так как формируют адрес очередного сообщения, подлежащего выдаче для каждого абонента. [34]
Кто составляет годовой отчет и для кого. В некоторых компаниях годовой отчет составляет специалист по связям с общественностью. Однако, если он не является одновременно специалистом по финансовым вопросам, он может обойти главную тему отчета и запрятать ее лишь в очередное сообщение для прессы. Финансовый отчет должен отражать финансовую сторону дела, В идеале финансовый отчет должны составлять совместно финансовый работник и эксперт по связям с общественностью. В этом случае содержание годового отчета обычно доходит до всех его читателей и представляет компанию в выгодном для нее свете. [35]
Каждая служба характеризуется качеством обслуживания. Некоторые службы являются надежными в том смысле, что они никогда не теряют данные. Обычно надежная служба реализуется при помощи подтверждений, посылаемых получателем в ответ на каждое принятое сообщение, так что отправитель знает, дошло ли очередное сообщение или нет. Процесс пересылки подтверждений требует некоторых накладных расходов и снижает пропускную способность канала. Обычно подобные затраты не очень велики и окупаются, хотя иногда могут быть нежелательными. [36]
В начале программы в блоках INITIAL задаются исходные данные, такие, как вероятность р появления события в момент времени 4, максимальное количество событий в очереди к обработке и др. Кроме того, в начале программы задаются арифметические выражения и функции, использующиеся в модели для вычисления переменных величин. События, обрабатываемые в ЭВМ, имитируются в модели сообщениями ( транзактами), которые генерируются в блоке GENERATE. Этот блок имитирует работу экспериментальной установки. При появлении очередного сообщения в блоке SAVEVALUE разыгрывается значение интервала времени до появления следующего события. [37]
![]() |
Формат сообщений ЗУПБ.| Формат слова запроса 3 - 7 65. [38] |
Основным режимом работы ПБ является запись информации, поступающей из ЛУ в буфер, и считывание информации из буфера в ЭВМ. Формат сообщений, хранящихся в ЗУПБ, приведен на рис. 3.7. Содержимое разрядов 00 - 14 совпадает с сообщением, поступающим от ЛУ. Разряд 15 формируется следующим образом. При записи очередного сообщения в ЗУПБ содержимое разряда МЛ равно содержимому аналогичного разряда предыдущей ячейки. После записи в последнюю ячейку ЗУПБ следующее сообщение записывается в нулевую ячейку ЗУПБ, при этом изменяется состояние разряда МЛ на противоположное. Таким образом, в каждый момент можно однозначно определить слово, записанное в ЗУПБ последним - все ячейки с меньшими адресами имеют содержимое МЛ, равное МЛ данного слова, и все ячейки с большими номерами - противоположное. [39]
Возвратимся в блок 2 и пойдем по ветви, управление на которую передается тогда, когда для выводимого сообщения не хватает буферов. В блоке 8 к CPUTIMER и TEMPD добавляются времена работы блоков F и G. В блоке 9 вход в Н помещается в таблицу следующего события в качестве условного события. Время завершения выдачи очередного сообщения мы здесь использовать не можем, поскольку, хотя и освободится какое-то буферное пространство, мы не можем быть уверены, что его хватит для удовлетворения данного запроса. После занесения отметки об условном событии осуществляется выход из программы. [40]
УЯ ] начинает последовательность операций в прежнем порядке. Если же сообщение отобрано схемой, то в устройство управления поступает импульс начала отображения, запрещающий дальнейшее поступление импульсов УИ на вход схемы дискриминатора, пока не закончится период отображения. В конце периода отображения генерируется импульс окончания отображения УЯ3, поступающий на вход переключателя регистров. Последний, в свою очередь, подготавливает регистры для приема очередного сообщения. [41]
Программисту, начинающему работать с Windows или РМ, наиболее тяжело дается непривычная структура программы. Это связано с тем, что базовым механизмом взаимодействия прикладной программы с оконной системой являются сообщения, посылаемые от оконной системы к прикладной программе. Таким образом, оконная система оказывается активным участником взаимодействия прикладной программы с системой. С другой стороны, прикладная программа должна быть всегда готова к обработке очередного сообщения ( в том числе - перевысветить все изображение в окне), постоянно с помощью специальных функций опрашивать очередь сообщений. [42]
И еще несколько слов в заключение. Представленный цикл включает две фазы: первая предназначена для внутреннего употребления библиотекой MFC, а во время второй вы получаете возможность выполнять любые задачи. Более того, если очередь приложения остается пустой достаточно длительное время, то вы можете получить дополнительные вызовы функции Onldle в течение одного цикла фоновой обработки. При этом параметр lldleCount позволяет отслеживать номер вызова. Но следует иметь в виду, что при поступлении очередного сообщения lldleCount сбрасывается в нуль. [43]
Внепрограммная выдача информации из ЦВМ по своей организации во многом сходна с описанным выше процессом выдачи информации при помощи вклинивающихся подпрограмм. Отличие здесь заключается в том, что реализация процедуры непосредственного вывода информации из буферной зоны осуществляется аппаратурой устройства обмена путем пословной выборки информации из буферной зоны. При этом в управляющем слове соответствующего внешнего абонента указывается текущее состояние процесса обмена. В отдельной ячейке оперативной памяти ЦВМ указывается также признак наличия свободного места в данной зоне буферной памяти. При полном заполнении зоны этот признак стирается и вновь восстанавливается при выдаче внешним абонентам очередного сообщения. [44]
Если есть вывод, ждущий освобождения буфера, выполняется блок 9, в котором должно проверяться соответствие имеющегося свободного буферного пространства требуемому. Если достаточного количества свободных буферов нет, модель переходит к блоку 7, в котором завершается моделирование и выполняется выход из программы. Если нужное количество буферов есть, в блоке 10 время блоков S, Т и U прибавляется к CPU-TIMER и ТЕМРМО. В блоке 11 для моделирования запуска выдачи сообщений используется подпрограмма. В ней вычисляются не только необходимые значения времени запуска, но и время завершения вывода очередного сообщения. В блоке 12 это время заносится в таблицу следующего события. [45]