Re: Вопрос


[ Пpишедшие ответы ] [ Отпpавьте свой ответ ] [ Пеpеговоpный пункт ] [ FAQ ]

Posted by Аркадий Водяник (195.58.229.62) on September 24, 2002 at 08:15:18:

In Reply to: Вопрос posted by Олег Грибов on September 24, 2002 at 04:56:11:

Вот так покажешь весь "кишечник" ФБП:Сервера на мнемосхеме
и попадешь под критику за недостатки его организации :)

Вы правы, Олег, здесь имеет место существенный недостаток,
обусловленный однонитевостью Сервера и, в большей степени,
нереентерабельностью процедуры пересчета состояния.
На заре возникновения двух контекстов этот недостаток
выглядел безобидным, но сейчас это действительно не так.
Отмечу, правда, что хорошая организация многонитевости
весьма трудна для DOS-платформы - тогда (1996) она была
гораздо популярнее других платформ, на которых работал
ФБП:Сервер. Атавизм оказался живучим.

Кажущуюся двухнитевость Сервер имитирует примерно так:


procedure REBALANCE;
begin
for month=first_month to last_month
do for operation=1 to last_operation
do begin
Пересчитываем операцию;
if operation mod 50 = 0
then begin
if Пришел запрос на ввод операции
then begin
{отвлекаемся на обработку ввода операции}
Запомним достигнутый first_month;
goto EXIT {уходим обрабатывать запрос,
но вернемся не в эту точку,
а снова войдем через вызов
процедуры REBALANCE }
end
end
end
EXIT:
end

Конечно же, вместо "goto EXIT" более рациональным шагом
было бы вызвать процедуру REBALANCE рекурсивно для
обработки запроса на ввод операции в другом контексте;
и затем вернуться в ту же точку, не теряя наработанного.
Однако, как я уже сказал, эта процедура нереентерабельна.

Разумеется, с такими нерациональными потерями времени
необходимо бороться за счет некоторого усложнения
организации ФБП:Сервера.



Пpишедшие ответы:



Отпpавьте свой ответ

Name:
E-Mail:

Subject:

Comments:
Link URL:
(можно не вводить)
Link Title:
(можно не вводить)
Image URL:
(можно не вводить)
ВАЖНО: Если отпpавленное сообщение не будет видно сpазу в
списке сообщений, нажмите клавишу Reload в browser'e.


[ Пpишедшие ответы ] [ Отпpавьте свой ответ ] [ Пеpеговоpный пункт ] [ FAQ ]