![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с многопоточным доступом к таблице (Paradox, BDE, Delphi [D4, D5, D6, D7, Paradox]
ki11er © (2003-12-01 15:27:00)
Суть проблемы такая.
Нужно, чтобы из одного потока в таблицу добавлялись записи в то время как во втором потоке выполняется длинный запрос на чтение.
Однако при таком раскладе запрос на чтение возвращает одни и те же записи по несколько раз. В принципе, это не очень страшно, однако эти "фантомы" прячут под собой реальные записи, которые вообще не возвращаются.
Исходники теста (на дэлфях и на билдере) здесь:
http://www25.brinkster.com/alex99933/db_test.html
Спасибо.
ki11er (2003-12-01 17:58:00) [1]
Отсортировано по времени.
Если присмотреться повнимательнее - найдешь одинаковые записи. В них все будет одинаково, даже первичный ключ.
Особенно заметно на больших таблицах (создай таблицу записей на 300000 - 500000)
Dred2k (2003-12-01 17:37:00) [2]
> ki11er (01.12.03 15:27)
Только что скомпилил и запустил твою прогу - все живет. На фоне записи добавляются, запрос возвращает все больше записей при каждом вызове. Поле Primary Key не отсортировано почему-то - из-за этого "фантомы", что ли? (значения 1, 2, 3 ... находятся не в самом начале, к примеру)
ki11er (2003-12-01 16:09:00) [3]
Все статьи на борланде (да и в других местах) уже прочитаны. Все сделано в соответствии с рекомендациями (взгляните на исходники). Однако глючит :(((
Сергей К. (2003-12-01 15:57:00) [4]
Как мне кажется Борланд, рекомендует для таких случаев использовать на каждый запрос отделный объект TSession.
Где то на сайте Борланда была статья на данную тему