Редактирование: ПОД (3 поток), Ответы

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

ПРЕДУПРЕЖДЕНИЕ: Длина этой страницы составляет 322 килобайт. Страницы, размер которых приближается к 32 КБ или превышает это значение, могут неверно отображаться в некоторых браузерах. Пожалуйста, рассмотрите вариант разбиения страницы на меньшие части.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1483: Строка 1483:
3.Не считается ошибкой наличие в почтовом ящике невостребованных сообщений при завершении процесса.
3.Не считается ошибкой наличие в почтовом ящике невостребованных сообщений при завершении процесса.
-
=== Использование операторов передачи сообщений ===
+
Использование операторов передачи сообщений
''Синхронный режим передачи сообщений''
''Синхронный режим передачи сообщений''
Строка 1497: Строка 1497:
Использование данного способа обмена сообщениями делает программу еще менее критичной к согласованию операторов обмена сообщениями, так как процесс-отправитель продолжает работу после передачи сообщения, не дожидаясь конца фактической передачи сообщения (и даже начала, так как система интерпретации "должна" сразу же, скопировав передаваемые данные в буфер, "отпустить" процесс) . Получатель сообщений этого типа может выдавать директиву приема сообщения, только удостоверившись в наличии нужного сообщения в почтовом ящике процесса при помощи функций: TESTMSG,TESTTAG,PROBE. Выполнение оператора RECEIVE без проверки наличия сообщения в почтовом ящике процесса, по аналогии с синхронным способом обмена, приводит к задержки выполнения процесса до приема со¬общения с заказанным тегом и ,возможно, с заданным именем отправителя. Но в отличие от синхронного способа, асинхронный способ позволяют про¬водить селекцию поступающих сообщений при помощи конструкций выбора. Пусть процесс может получать сообщения с тегом 1, но от процесса TI - скаляр целого типа, а от процесса TM(1) - массив из 100 целых чисел. Тогда,прием таких сообщений может быть запрограммированно так:
Использование данного способа обмена сообщениями делает программу еще менее критичной к согласованию операторов обмена сообщениями, так как процесс-отправитель продолжает работу после передачи сообщения, не дожидаясь конца фактической передачи сообщения (и даже начала, так как система интерпретации "должна" сразу же, скопировав передаваемые данные в буфер, "отпустить" процесс) . Получатель сообщений этого типа может выдавать директиву приема сообщения, только удостоверившись в наличии нужного сообщения в почтовом ящике процесса при помощи функций: TESTMSG,TESTTAG,PROBE. Выполнение оператора RECEIVE без проверки наличия сообщения в почтовом ящике процесса, по аналогии с синхронным способом обмена, приводит к задержки выполнения процесса до приема со¬общения с заказанным тегом и ,возможно, с заданным именем отправителя. Но в отличие от синхронного способа, асинхронный способ позволяют про¬водить селекцию поступающих сообщений при помощи конструкций выбора. Пусть процесс может получать сообщения с тегом 1, но от процесса TI - скаляр целого типа, а от процесса TM(1) - массив из 100 целых чисел. Тогда,прием таких сообщений может быть запрограммированно так:
-
IF (TESTTAG(1)) THEN
+
IF (TESTTAG(1)) THEN
-
SELECT MESSAGE
+
-
CASE(1,TI)
+
-
RECEIVE (1) K
+
-
CASE(1,TM(1))
+
-
RECEIVE (1) KM
+
-
END SELECT
+
-
END IF
+
-
или:
+
-
SELECT MESSAGE
+
SELECT MESSAGE
-
CASE(1,TI)
+
-
RECEIVE (1) K
+
-
CASE(1,TM(1))
+
-
RECEIVE (1) KM
+
-
CASE DEFAULT
+
-
GO TO 2
+
-
END SELECT
+
-
2 CONTINUE
+
-
Ожидание этих сообщений, то есть, по аналогии с синхронной передачей сообщений, прерывание работы процесса до получения сообщения (в данном случае любого из ожидаемого) записывается так:
+
CASE(1,TI)
-
SELECT MESSAGE
+
RECEIVE (1) K
-
CASE(1,TI)
+
-
RECEIVE (1) K
+
-
CASE(1,TM(1))
+
-
RECEIVE (1) KM
+
-
END SELECT
+
-
Если сообщения различаются тегами, то конструкция их ожидания может иметь вид:
+
CASE(1,TM(1))
-
SELECT MESSAGE
+
RECEIVE (1) KM
-
CASE(1)
+
-
RECEIVE (1) K
+
-
CASE(2,TM(1))
+
-
RECEIVE (2) KM
+
-
END SELECT
+
-
''Режим передачи сообщений без ожидания''
+
END SELECT
 +
 
 +
END IF или:
 +
 
 +
SELECT MESSAGE
 +
 
 +
CASE(1,TI)
 +
 
 +
RECEIVE (1) K
 +
 
 +
CASE(1,TM(1))
 +
 
 +
RECEIVE (1) KM
 +
 
 +
CASE DEFAULT
 +
 
 +
GO TO 2
 +
 
 +
END SELECT 2 CONTINUE
 +
 
 +
Ожидание этих сообщений, то есть, по аналогии с синхронной переда¬чей сообщений, прерывание работы процесса до получения сообщения (в данном случае любого из ожидаемого) записывается так:
 +
 
 +
SELECT MESSAGE
 +
 
 +
CASE(1,TI)
 +
 
 +
RECEIVE (1) K
 +
 
 +
CASE(1,TM(1))
 +
 
 +
RECEIVE (1) KM
 +
 
 +
END SELECT
 +
 
 +
Если сообщения различаются тегами, то конструкция их ожидания мо¬жет иметь вид:
 +
 
 +
SELECT MESSAGE
 +
 
 +
CASE(1)
 +
 
 +
RECEIVE (1) K
 +
 
 +
CASE(2,TM(1))
 +
 
 +
RECEIVE (2) KM
 +
 
 +
END SELECT
 +
 
 +
Режим передачи сообщений без ожидания
Передачи сообщений этого типа рекомендуется использовать для пере¬дачи данных "впрок", заблаговременно. Если после операторов SEND / RECEIVE без ожидания, поместить операторы: CALL MSDONE(L),
Передачи сообщений этого типа рекомендуется использовать для пере¬дачи данных "впрок", заблаговременно. Если после операторов SEND / RECEIVE без ожидания, поместить операторы: CALL MSDONE(L),

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Шаблоны, использованные на этой странице:

Личные инструменты
Разделы