Текущий архив: 2008.04.27;
Скачать: CL | DM;
Вниз
Совместное использование TTable Найти похожие ветки
← →
Alex_C (2008-04-03 16:54) [0]Вопрос: есть справочная таблица TTable. Ее одновременно могут использовать несколько тредов. Естественно возникает проблема, когда сразу несколько тредов к ней обращаются. Правильно ли я сделал такую ф-цию поиска, чтобы этого изизбежать:
procedure FindInTable(Table: TTable; CS: TRTLCriticalSection);
begin
EnterCriticalSection(CS);
try
Table.First;
// Чего-то там ищем
finally
LeaveCriticalSection(CS);
end;
end;
Естественно критическая секция определена ранее одна для всех процессов.
← →
Сергей М. © (2008-04-03 16:56) [1]
> TTable. Ее одновременно могут использовать несколько тредов
Если мне не изменяет память, не могут, даже при организации синхронного доступа.
← →
Игорь Шевченко © (2008-04-03 16:57) [2]многопоточное приложение для BDE должно следовать описанию в справке.
а правильно ты сделал или нет, тебе покажет твой собственный опыт.
← →
Loginov Dmitry © (2008-04-03 22:51) [3]> Правильно ли я сделал такую ф-цию поиска, чтобы этого изизбежать:
Нет. Не правильно. Для каждого треда необходимо создавать отдельно TDataBase, TSession и TTable/TQuery. Это намного проще, чем при твоем подходе ловить потенциальные глюки в дальнейшем. А они будут, особенно, если с TTable связаны какие-либо визуальные компоненты.
← →
DrPass © (2008-04-03 23:48) [4]
> Если мне не изменяет память, не могут, даже при организации
> синхронного доступа
Через Synchronize должно получиться, в этом случае процедурка будет переключаться в контекст основного потока
Страницы: 1 вся ветка
Текущий архив: 2008.04.27;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.021 c