Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2020, 08:58   #1
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию Не ожидать завершения транзакции

Всем привет!
Коротко о задаче, что реализовано и где проблема.
Парсинг и вставка XML реализована в хранимой процедуре на стороне СУБД MsSQL.
Задача: Многопоточная вставка, где 1 XML = 1 Поток
Мониторинг вставки, обновление визуального компонента для отображения состояния вставки для всех потоков

Мониторинг реализован отдельным потоком, который через SQL возвращает текущее состояние вставки всех вставляемых (не законченных) на данный момент XML

Проблема заключается в том, что процедуры висят на одном TFdConnection и соответственно происходит ожидание завершения транзакции. И там не важно, в потоке выполняется вставка или нет, все равно, пока не вставиться 1 файл, не начнется вставка второго и.т.д. Соответственно и поток с мониторингом ожидает завершения транзакции хранимки вставки. Проблему я решил повесив каждый поток на отдельное подключение TFdConnection . Но мне это совсем не нравиться.
Подскажите может это можно как то сделать иначе? На одном TFdConnection.
Или в целом подобная реализация (вешать отдельное подключение на поток) имеет место на жизнь и мне за это не отрежут руки. Если моя реализация соответствует рамкам приличия, на что обратить внимание? Речь не о логикие(я понимаю, что я работаю с потоками, с множествами, с тем что каждый юзер может лить как и что угодно и не исключено, что даже одо и тоже, это вопрос синхронизации действий который решу позже), я спрашиваю о чем-то системном. Поделитесь опытом.
Пишу много и развернуто

Последний раз редактировалось Heneken87; 03.07.2020 в 09:25.
Heneken87 вне форума Ответить с цитированием
Старый 03.07.2020, 10:59   #2
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Гугл рулит.
Кому интересно на все вопросы ответы в 1 статье http://digital-flame.ru/2016/01/24/d...ogopotochnost/
Пишу много и развернуто
Heneken87 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как не ожидать окончания работы процедуры, а также вопрос по скроллу в RichEdit. The SCS Общие вопросы Delphi 3 03.02.2012 23:51
транзакции sem_1989 SQL, базы данных 1 23.09.2011 22:43
прога отказывается ожидать нажатия клавиши begovik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 09.03.2010 23:50
Проблема с главным потоком. Как заставить его ожидать не загружая процессор Altera Общие вопросы Delphi 23 06.01.2010 14:40
Транзакции + ADO azat БД в Delphi 3 14.01.2008 11:47