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