OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 22:36

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Четверг, 27 Сентябрь, 2007 01:42 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Уважаемые специалисты,

В форумах этого сайта несколько раз проскакивало мнение, что цикл LOOP в Обероне является избыточным. Так ли это? Вот, например, рассмотрим многопоточное программирование, и пусть условие цикла должно вычисляться в критической секции:

Код:
IMPORT
  SEM:=Semaphores;
...
CONST
  Count = ...
...
VAR
  ind:LONGINT; (* Глобальный счётчик для нескольких потоков *)
  S:SEM.SEMAPHORE;
...

PROCEDURE Proc; (* Процедура, выполняемая в нескольких потоках одновременно *)
  BEGIN
...
    LOOP

      SEM.Claim(S); (* Начало критической секции *)
      i:=ind;
      INC(ind);
      SEM.Release(S); (* Конец критической секции *)
      IF i>=Count THEN
        EXIT
      END;
...
    END; (* LOOP *)
...
  END Proc;

...

BEGIN
  SEM.Create(S,1);
FINALLY
  SEM.Destroy(S);
END ModuleName.


(Синтакстс XDS-Oberon)

Кажется, в такой ситуации WHILE или REPEAT - UNTIL не применимы?

С уважением,
GameHunter.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Четверг, 27 Сентябрь, 2007 08:49 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Код:
REPEAT
  exitCondition := CriticalSectionEvaluation()
UNTIL exitCondition;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Четверг, 27 Сентябрь, 2007 12:52 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
GameHunter писал(а):
Кажется, в такой ситуации WHILE или REPEAT - UNTIL не применимы?

С уважением,
GameHunter.
Если проверка условия проводится в начале или конце цикла, то данные конструкции применимы всегда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Четверг, 27 Сентябрь, 2007 21:23 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Александр Ильин писал(а):
Код:
REPEAT
  exitCondition := CriticalSectionEvaluation()
UNTIL exitCondition;

А вот в активностях объектов Активного Оберона ОЧЕНЬ ЧАСТО именно LOOP ... END является "естественным" конструктом жизненного цикла объекта. А вот выходы (условия прекращения жизни) могут проверяться в разных местах и по разному поводу - IF ... THEN EXIT END - очень, знаете ли, сподручно так организовывать код. Естественней, что ли...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Воскресенье, 30 Сентябрь, 2007 19:39 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
GameHunter писал(а):
Уважаемые специалисты,

В форумах этого сайта несколько раз проскакивало мнение, что цикл LOOP в Обероне является избыточным. Так ли это? ...


LOOP хорош для оптимизаций -- когда охрана сложная, и ее часть нужна в дальнейших вычислениях.
Но как-то ограничить LOOP все равно нужно. Бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Воскресенье, 30 Сентябрь, 2007 23:18 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Что такое сложная охрана?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Так ли уж не нужен LOOP... ?
СообщениеДобавлено: Воскресенье, 30 Сентябрь, 2007 23:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
"Охрана цикла" - синоним "условие цикла". Более грамотный синоним. Т.к. условий, вообще говоря, у цикла два - условие продолжения и условие окончания. Охрана - это условие продолжения.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB