![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как снять
Карелин Артем © (2003-10-23 17:14:00)
Ситуация такая: есть хранимая процедура, которая хитрым образом выбирает данные из десятка не маленьких таблиц по определенным условиям и запрос на клиенте, который из этого набора выбирает то, что юзер прописал. В сетку это попадает моментально, потому как фетчится только десяток-другой записей. Еще юзеру иногда хочется оценить количество этих записей. В принципе это решается банальным запросом select count с заданными условиями, но очень часто такой запрос занимает определенное время.
Чтобы юзер не грустил, такой запрос можно даже поместить и внутрь потока с низким приоритетом. Это не проблема. Проблема в том, как прекратить выполнение этого запроса досрочно.
Mike Kouzmine (2003-10-24 09:52:00) [1]
Val © (23.10.03 20:16) [9] Для непонятливых. Возбуждается исключение в ХП "Прервали". Клиент обрабатывает его с выводом сообщения "ПРИДУРОК, ТЫ ЧТО НАЖАЛ?" и, если запрос выполнялся в отдельном потоке (как это сейчас модно), убивает поток. Что не понятно?
kaif (2003-10-23 20:56:00) [2]
Все же сервер что-то знает о потоках, если существуют транзакции wait. Хотя это так... Предположение.
Val (2003-10-23 20:16:00) [3]
>bushmen © (23.10.03 17:36) [6]
>Mike Kouzmine © (23.10.03 17:36) [7]
ну а что же сервер знает о потоках?
Mike Kouzmine (2003-10-23 17:37:00) [4]
И прибить твой поток.
bushmen (2003-10-23 17:36:00) [5]
Я тоже не понимаю, причем тут ibase.ru Мы прибиваем процесс со стороны Delphi. Или хочется, чтобы со стороны базы он пришибался?
Mike Kouzmine (2003-10-23 17:36:00) [6]
Почему же. Тогда можно обработать эту ситуацию.
Карелин Артем (2003-10-23 17:35:00) [7]
Mike Kouzmine © (23.10.03 17:30) [4]
Точно, только вот без исключения лучше выходить.
Mike Kouzmine (2003-10-23 17:30:00) [8]
Берешь генератор, значение ноль. Клиент делает его = 1 - процедура проверяет и выходит с генерацией исключения.
Карелин Артем (2003-10-23 17:27:00) [9]
bushmen © (23.10.03 17:18) [2]
Как? На Terminate поток среагирует после завершения запроса, да и тов. Digitman © кроме нижеследующего писать не хочет:
а все что связано с TerminateThread() - не выдерживает никакой критики и чревато серьезными проблемами, вплоть жо краха как процесса сервера так и процесса клиентаи кидает на сайт IBASE.RU, где описана совсем другая ситуация.
bushmen (2003-10-23 17:18:00) [10]
Делай в отдельном потоке, а потом пришибай поток ?!
Vlad (2003-10-23 17:17:00) [11]
>Карелин Артем © (23.10.03 17:14)
Убить поток ?