"Мадорский Г.В." ...
>
>
> "Horsun Vlad" ...
> >
> > "Мадорский Г.В." ...
> >>
> >> Что-то типа такого подойдет?
> >>
> >> while Gen_Id(LockGen,0) = 1 do
> >> begin
> >> end;
>
>   ***********************
>
> >> Select Gen_Id(LockGen,1) from rdb$database
> >> Тута работаем...
> >
> >
> >    Не пойдёт. Ибо нет гарантии, что Gen_Id(LockGen,1)
> > выполнил только один процесс.
> >
>
> В смысле может вклинится еще один процесс в промежуток отмеченный *** ?

    Конечно - кто-то же должен уменьшить генератор ;)
Так почему кто-то другой не может его увеличить ?

    Без блокировок (в том или ином виде) такие задачи не решаются.

    Не говорю уже о том, что неограниченный по времени спинлок (первый цикл
while) далеко не самое эффективное решение

-- 
Хорсун Влад


Ответить