powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDac, многопоточность и TFDConnection
3 сообщений из 3, страница 1 из 1
FireDac, многопоточность и TFDConnection
    #40079416
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

при работе с базой в многопоточных приложениях лучше все компоненты для взаимодействия с базой иметь в в каждом потоке свои.
Относится ли это к TFDConnection? или можно использовать один и тот же TFDConnection во всех созданных потоках?
Дабы уменьшить накладные рассходы на соединение.

Спасибо
...
Рейтинг: 0 / 0
FireDac, многопоточность и TFDConnection
    #40079419
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

я вот что нагуглил: Multithreading (FireDAC)

там есть такое:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FireDAC is thread-safe if the following conditions are met:
- A connection object and all objects associated with it (such as TFDQuery, 
  TFDTransaction, and so on) are used by a single thread at each moment.

- FDManager is activated before threads start, by setting FDManager.Active to True.


This means that after a thread opens a query and until its processing is finished, 
the application cannot use this query and the connection objects in another thread. 
Similarly, after a thread starts a transaction and until the transaction is finished, 
the application cannot use this transaction and the connection objects in another thread. 
...
Рейтинг: 0 / 0
FireDac, многопоточность и TFDConnection
    #40079488
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

для всех серверов правило 1 тред на 1 коннект. В одном коннекте можно использовать несколько тредов, но многопоточного выполнения не будет - все эти треды будут упираться в синхронизацию вызовов в коннекте.
Да, и это правило не для FireDAC, а для самих коннектов серверов, какими бы драйверами или компонентами они ни были сделаны.

Исключение вроде только в MS SQL, в MARS, когда данные можно вытаскивать параллельно. Хотя, в MARS для разных резалтсетов организуются разные логические коннекты, и "параллельность" именно отсюда. Так что и тут, параллельно в одном коннекте - нет.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDac, многопоточность и TFDConnection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]