powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus: выборка в потоке
17 сообщений из 42, страница 2 из 2
Lazarus: выборка в потоке
    #39623735
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockпараметры нужны потоку перед началом работы

Параметры запросов не часть бизнес-логики клиента БД?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623739
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док

Не находишь, что вопрос про "как вы передаете параметры запроса в поток" превратился в "как вы передаете параметры в конструктор класса"?

З.Ы. Может есть возможность решить проблему на уровне общей архитектуры: перевести датасеты в асинхронный режим, а потоки оставить там, где они действительно нужны?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623754
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarНе находишь, что вопрос про "как вы передаете параметры запроса в поток" превратился в "как вы передаете параметры в конструктор класса"?
нет, первое - частный случай второго. Именно он меня и интересует.

stanilarперевести датасеты в асинхронный режим, а потоки оставить там, где они действительно нужны?
мне не нужны параллельные вычисления. Мне нужен "незамерзающий" гуй. Вся бизнес-логика заключается в частом одномоментном сохранении большого объема данных в БД, которое порой занимает довольно ощутимый промежуток времени.

YuRockОчевидно, у каждого своё представление о наглядности)
сейчас, просматривая свой код 5-7 летней давности, я иногда называю себя нехорошими словами, как будто он код писан другим человеком :)
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623778
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarYuRockпараметры нужны потоку перед началом работы

Параметры запросов не часть бизнес-логики клиента БД?В том-то и дело. Но вводятся-то они в другом потоке по любому.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623795
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докпервое - частный случай второго
Нет. Но спорить не буду.

Докчастный случай второго. Именно он меня и интересует
Ну и зачем тут потоки?

Докбизнес-логика заключается в частом одномоментном сохранении большого объема данных в БД
Может скинуть во временные файлы (винда их сама умеет удалять) и передать стороннему приложению для записи в БД?
А то ведь создается впечатление, что ты идешь очень опасным путем, играясь с экспериментальным компилятором, с неоднозначной реализацией потоков в разных ОС(ты ведь не пользуешь WINE для порта виндового исходника программы в линух), в которых экспериментальным отладчик может и не показать тебе ошибку, так еще и игнорируешь опыт тех, кто уже шел до тебя: Lazarus: коннект в потоке совет №3 (Таки вместе задачи решать веселее, особенно с профессиональным коллегой).
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623814
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarМожет скинуть во временные файлы (винда их сама умеет удалять) и передать стороннему приложению для записи в БД?
я уже пытался в основном потоке писать изменяемые данные в GTT и в пишущей транзакции сохранять их в базе - все равно долго. Думаешь время записи-чтения на/с винта будет меньше? И потом, надо будет заморачиваться с проверкой прав на временную папку (и это, как минимум в двух ОСях) и/или проверкой свободного места на диске. Нафиг.


stanilarА то ведь создается впечатление, что ты идешь очень опасным путем, играясь с экспериментальным компилятором, с неоднозначной реализацией потоков в разных ОС
я просто экспериментирую, ибо не имел раньше опыта. Все, что пишется мне в ответах, я внимательно читаю.

Про сторонний код я уже говорил. Я даже бесплатный wadman'овский безопасный код выпилил из своих ранних исходников, как только немного разобрался с кухней доп.потоков.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623989
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
type
  TPrmNameArr = array of String;
  TPrmValueArr = array of Variant;

  TMyRec = packed record
    SQLText: String;
    ParamName: TPrmNameArr;
    ParamValue: TPrmValueArr;
  end;  

procedure ...
var MyRec: TMyRec;
...
//<задаем размер и заполняем MyRec>
...
MyThread:= TMyThread.Create (..,MyRec, ...);
...




а откуда брать коннект? куда записывать результаты выполнения запроса и ошибки?

зы
читаю этот топик, топик по ссылке в первом посте и некоторые рядом, и чет офигеваю как тут все сложно
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624011
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгенийчет офигеваю как тут все сложно
ничего сложного нет, достаточно немного абстрагироваться от привычной схемы коннекта. В доп.поток передается мемори датасет (посредством чего данные возвращаются в основной поток) и параметры коннекта и запроса, все остальное создается в доп.потоке в runtime :)
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624039
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коннект создается каждый раз?

про сложность это я имел ввиду терки в нескольких топиках про многопоточность
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624228
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгенийконнект создается каждый раз?
да: каждый раз на insert-update-delete

Дегтярев Евгенийтерки в нескольких топиках
законы жанра как бэ...
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624314
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

авторда: каждый раз на insert-update-delete

в хп может вынести? я у себя в одной программе понаблюдал за запросами, которые сам же и делал, и утащил сразу 5 запросов в одну хп. по скорости не мерял, но код стал явно лучше и чище. скорее всего и скорость улучшилась.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624368
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonв хп может вынести?
а смысл? Те же n-цать запросов я могу и на клиенте в одну процедуру затолкать...
Собственно, я для себя уже определился. Тему можно считать исчерпанной.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624398
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дока смысл? Те же n-цать запросов я могу и на клиенте в одну процедуру затолкать...Ну, смысл большой.
Сервер откомпилирует ее как одно целое один раз заранее. А не будет компилировать n-цать запросов каждый раз.
Плюс не будет накладных расходов на кучу сетевых запросов.
Будет намного быстрее.
Если запросы быстрые (как и должно быть) - может быстрее в разы, а то и на порядки (зависит от n, сети, скорости компиляции и выполнения запросов, размера базы...).
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624430
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокДегтярев Евгенийконнект создается каждый раз?
да: каждый раз на insert-update-delete
не накладно будет для сервера на каждый запрос поднимать и тушить соединение?
если запросы не по минуте выполняются, я бы держал отдельно открытое соединение и передавал его в поток. если потоков несколько,
то в идеале пул коннектов

ДокДегтярев Евгенийтерки в нескольких топиках
законы жанра как бэ...
да просто поразился масштабам, в свое время на делфи многопоточкой не интересовался, поэтому не в теме
сейчас на go, для синхронизации достаточно пары примитивов, правда там без gui
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624486
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

делфёвые циклы, к слову, распарраллеливаются в две-три строки кода. если тело циклов может работать как многопоточное.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624525
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon, а мжно пример?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39624901
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

ну, например, многопоточное чтение файлов у меня:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
Parallel.ForI(FirstStackSlice, LastStackSlice,
   procedure (i1, i2, tdi: integer)
   var
    i: integer;
   begin
    for i := i1 to i2 do
     EnsureSliceOpened(i, True);
   end,
   pfInterleaved);



EnsureSliceOpened - довольно некислая процедура, тысяч в 20 строк. паресер довольно толстый + обвязка. Ускорилось раз в 6-7 на i7-м.
Библиотеку я уже не единожды кидал, ищи. Библиотека довольно компактная. В новых средах есть встроенная аналогичная.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus: выборка в потоке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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