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