OberonCore https://forum.oberoncore.ru/ |
|
Так ли уж не нужен LOOP... ? https://forum.oberoncore.ru/viewtopic.php?f=30&t=666 |
Страница 1 из 1 |
Автор: | GameHunter [ Четверг, 27 Сентябрь, 2007 01:42 ] |
Заголовок сообщения: | Так ли уж не нужен LOOP... ? |
Уважаемые специалисты, В форумах этого сайта несколько раз проскакивало мнение, что цикл 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. |
Автор: | Александр Ильин [ Четверг, 27 Сентябрь, 2007 08:49 ] |
Заголовок сообщения: | Re: Так ли уж не нужен LOOP... ? |
Код: REPEAT
exitCondition := CriticalSectionEvaluation() UNTIL exitCondition; |
Автор: | Valery Solovey [ Четверг, 27 Сентябрь, 2007 12:52 ] |
Заголовок сообщения: | Re: Так ли уж не нужен LOOP... ? |
GameHunter писал(а): Кажется, в такой ситуации WHILE или REPEAT - UNTIL не применимы? Если проверка условия проводится в начале или конце цикла, то данные конструкции применимы всегда.
С уважением, GameHunter. |
Автор: | Wlad [ Четверг, 27 Сентябрь, 2007 21:23 ] |
Заголовок сообщения: | Re: Так ли уж не нужен LOOP... ? |
Александр Ильин писал(а): Код: REPEAT exitCondition := CriticalSectionEvaluation() UNTIL exitCondition; А вот в активностях объектов Активного Оберона ОЧЕНЬ ЧАСТО именно LOOP ... END является "естественным" конструктом жизненного цикла объекта. А вот выходы (условия прекращения жизни) могут проверяться в разных местах и по разному поводу - IF ... THEN EXIT END - очень, знаете ли, сподручно так организовывать код. Естественней, что ли... |
Автор: | Info21 [ Воскресенье, 30 Сентябрь, 2007 19:39 ] |
Заголовок сообщения: | Re: Так ли уж не нужен LOOP... ? |
GameHunter писал(а): Уважаемые специалисты, В форумах этого сайта несколько раз проскакивало мнение, что цикл LOOP в Обероне является избыточным. Так ли это? ... LOOP хорош для оптимизаций -- когда охрана сложная, и ее часть нужна в дальнейших вычислениях. Но как-то ограничить LOOP все равно нужно. Бы. |
Автор: | GameHunter [ Воскресенье, 30 Сентябрь, 2007 23:18 ] |
Заголовок сообщения: | Re: Так ли уж не нужен LOOP... ? |
Что такое сложная охрана? |
Автор: | Илья Ермаков [ Воскресенье, 30 Сентябрь, 2007 23:25 ] |
Заголовок сообщения: | Re: Так ли уж не нужен LOOP... ? |
"Охрана цикла" - синоним "условие цикла". Более грамотный синоним. Т.к. условий, вообще говоря, у цикла два - условие продолжения и условие окончания. Охрана - это условие продолжения. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |