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

Не хочется изобреть свой велосипед. Хотел уточнить у тех, кто пользует этот вариант, как вы передаете параметры запроса в поток:

1. отдельно текст запроса + массив имен параметров + массив значений параметров
2. текст запроса --> парсинг имен параметров в теле доп.потока + массив значений параметров
3. еще как-то...

?
=================
Док.

Win7 Ultim x64/Deb 9.2(GNOME, MATE; gtk2) i386:
FB 3.0.2.32703, диалект 3, SS,
Lazarus 1.9(r.57543); FPC 3.1.1 (r.38588), IBX by -Rik-; IBE 2017.4.19.2
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39622522
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

1 вариант - наиболее прозрачный как по мне.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39622935
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такое читал?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623139
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarВот такое читал?
Пролистал статью, раньше ее не видел. Странная.
1. Вначале предлагается использование FreeOnTerminate, OnTerminate и Synchronize как панацею от всех бед, при этом не описываются связанные с этим грабли. Хотя статья времен D5, когда Synchronize работал через SendMessage, и граблей было поэтому меньше, но часть их была всё равно.
2. Потом, наконец, честно описываются обычные проблемы, которые возникают из-за использования вышепредложенного мусора, типа дэдлоков при WaitFor и Synchronize/OnTerminate, и героические пути их решения. При чем таким тоном, как будто эти муки - обычная необходимая вещь, рутина в жизни любого опытного программера.
3. И в конце - создание более-менее похожего на жизнеспособный примера без использования всего этого говна, и радостное заключение: "Мы достигли нашей цели!.. Не используется Synchronize. Потоки без необходимости не блокируются"!
Да, неожиданный конец. Вернее, в реальной жизни всегда так - как ни пытайся сделать яичницу из теннисных шариков, всё равно придется сходить в магазин за яйцами.
Но странно, когда статья изначально в споре зеленого и черного топит за зеленое, а заканчивается утверждением, что черное лучше.

Вообще, впечатление, что автор статьи - мазохист.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623149
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По теме.
1-й вариант - нормальный. 3 параметра в конструктор потока, например.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623323
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockПролистал статью, раньше ее не видел. Странная.Вообще-то это хрестоматийная книга по потокам в делфи, необходимая каждому, кто хочет научится ими пользоваться. А то потом плодятся с альтернативными подходами...
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623336
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerВообще-то это хрестоматийная книга по потокам в делфи, необходимая каждому, кто хочет научится ими пользоваться
Я в тебе и не сомневался
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623430
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerВообще-то это хрестоматийная книга по потокам в делфи
все это читано и не раз. В статье даны основы, но вопрос в другом

YuRock3 параметра в конструктор потока, например
Скажем, если я буду пользовать конструкцию примерно такого вида
Код: 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, ...);
...


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

Не знаю, я лично не люблю в структурах автоматические типы.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623491
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

А почему нe:

Код: pascal
1.
constructor TMyThread.Create(SQL:String; ParamNames:array of string; ParamValues:array of Variant);
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623503
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterА почему нe:
"Не аккуратненько" ©

На самом деле, я на стендовых проектиках сейчас в поток передаю что-то типа Array of TMyRec, только у структуры поля простые (стринги, целые, пойнтеры и проч.), потому что будет необходимость передавать и блобы. Конечно, хочется сделать какой-нибудь универсальный наследник потока. Но боюсь утонуть в его коде. Похоже, придется отделять мух от котлет :)

Дело для меня новое, опыта нет. Вот и экспериментирую.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623513
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Угу, а отдавать в поток array of Rec, который тоже где-то как-то заполняется - более красиво У меня хоть ясно видно, какой поток с какими параметрами зовется. А блобы и в MemoryStream можно запихнуть - я не думаю, что их у тебя (параметров в виде блоба), много будет - не самый распространненый вид данных.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623517
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerхрестоматийная книга
Вот потому и дана ссылка.

Что касается вопроса, то у меня возникло ощущение что архитектура будущего решения притягивается к способу реализации. Зачем передавать какие-то параметры в поток, (что говорит о том, что бизнес-логика вне потока), когда можно синхронизировать датасурс с датасетом после завершения запроса (говоря по другому - передать всю бизнесс-логику в поток)?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623522
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockВообще, впечатление, что автор статьи - мазохист.

Дай ссылку на лучшее. Не все хотят тратить свое время на изучения граблей, хотя такие знания и приветствуются. Но тем, кто во всем разобрался и поделился своими познаниями с остальными - честь и хвала.


YuRockпредлагается использование FreeOnTerminate, OnTerminate и Synchronize

Как по мне, так в статье предлагается понять, как абракадабра видит работу паскалистов с потоками. Сие учебное пособие достаточно корректно описывает особенности работы стандартных библиотек.

P/S/

Можно еще посоветовать Доку аналог omni thread под лазарь, чтоб под влиянием кода от гуру программирования его дзен поразил бы нас своей красотой! Но вот увы - под лазарь мне такие библиотеки неизвестны.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623524
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокКонечно, хочется сделать какой-нибудь универсальный наследник потока.
Универсальность обычно ухудшает функциональность.
Совсем универсально можно сделать так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
type
  TMyParams = class
    SQL: String;
    ParamNames: Array of String;
    ParamValues: Array of Variant;
    // ... Ну и еще что хочешь - блобы, пойнтеры... главное потом не забыть копирование сделать в Assign

    constructor Create( ACopyFrom: TMyParams = nil );
    procedure Assign( ACopyFrom: TMyParams );
  end;

constructor TMyParams.Create( ACopyFrom: TMyParams = nil );
begin
  if Assigned( ACopyFrom ) then
    Assign( ACopyFrom );
end;

procedure TMyParams.Assign( ACopyFrom: TMyParams );
var
  i, nLen: Integer;
begin
  SQL := ACopyFrom.SQL;
  
  nLen := Length( ACopyFrom.ParamNames );
  
  SetLength( ParamNames, nLen );
  for i := 0 to nLen - 1 do
    ParamNames[ i ] := ACopyFrom.ParamNames[ i ];

  SetLength( ParamValues, nLen );
  for i := 0 to nLen - 1 do
    ParamValues[ i ] := ACopyFrom.ParamValues[ i ];
end;

// ну и поток
type
  TMyThread = class( TThread )
  private
    FParams: TMyParams;
  public
    constructor Create( const Params: TMyParams );
    destructor Destroy; override;
  end;

constructor TMyThread.Create( const Params: TMyParams );
begin
  FParams := TMyParams.Create( AParams );
  ...
end;

destructor TMyThread.Destroy;
begin
  inherited;
  FParams.Free;
end;


Таким образом Params для передачи в конструктор потока можно создавать перед созданием объекта потока и сразу удалять, а можно вообще объект Params общий держать (или несколько), только некоторые данные в нем менять (если в одном потоке)... И ничего не надо будет синхронизировать никогда (касательно этих Params).

Правда, если ты что-то огромное будешь в параметры пихать - то, конечно, два раза под это память выделять - тоже плохо.
Но это - палка о двух концах - либо дублирование, либо синхронизация.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623528
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarможно синхронизировать датасурс с датасетом после завершения запроса (говоря по другому - передать всю бизнесс-логику в поток)?
Если "передать всю бизнесс-логику в поток" - то зачем тогда "синхронизировать датасурс с датасетом после завершения запроса"?

Или я не понял нифига.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623561
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockСовсем универсально можно сделать так:
спасибо, я примерно так и реализовал, только без выделения промежуточного класса TMyParams, запихав передаваемые аргументы во внутренние поля доп. потока.

Пожалуй, отдам предпочтение наглядности в ущерб универсализму. Пусть лучше код будет индусским, зато проще потом сопровождать


stanilarЗачем передавать какие-то параметры в поток, (что говорит о том, что бизнес-логика вне потока), когда можно синхронизировать датасурс с датасетом после завершения запроса (говоря по другому - передать всю бизнесс-логику в поток)?
не догнал. Поясни, плз.


stanilarМожно еще посоветовать Доку аналог omni thread под лазарь
отказался от проприетарного чужого кода принципиально.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623563
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterА блобы и в MemoryStream можно запихнуть - я не думаю, что их у тебя (параметров в виде блоба), много будет - не самый распространненый вид данных.
бинарных м.б. и не так, а вот текстовых(с форматированием) - очень даже запросто.

Эти фишки я решил реализовать через доп.поток, т.к. в нынешней реализации клиента сохранение данных по локалке иногда "подвешивает" гуи секунд на 5-7, что совсем не комильфо.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623565
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockзачем тогда "синхронизировать датасурс с датасетом после завершения запроса"

Показать данные на форме надо?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623625
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarYuRockзачем тогда "синхронизировать датасурс с датасетом после завершения запроса"

Показать данные на форме надо?Откуда я знаю?
Док в этих темах, вообще-то, занимается именно реализацией бизнес-логики в доп. потоках. Поэтому как-то странно звучит совет "перенести бизнес-логику в доп. поток".
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623626
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокПожалуй, отдам предпочтение наглядности в ущерб универсализму.Очевидно, у каждого своё представление о наглядности)
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623631
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockреализацией бизнес-логики в доп. потоках

Почему тогда поток данных(цитата: "передаете параметры запроса в поток") направлен в поток а не из потока?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623632
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокПоясни

Если бизнес-логика в потоке, то синхронизировать надо не передачу параметров в поток, а отображение полученных в потоке данных.
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623694
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarПочему тогда поток данных(цитата: "передаете параметры запроса в поток") направлен в поток а не из потока?Потому, что эти параметры нужны потоку перед началом работы, а не после?
...
Рейтинг: 0 / 0
Lazarus: выборка в потоке
    #39623695
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilarДокПоясни

Если бизнес-логика в потоке, то синхронизировать надо не передачу параметров в поток, а отображение полученных в потоке данных.Синхронизировать надо и то, и другое. Если есть.
...
Рейтинг: 0 / 0
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
42 сообщений из 42, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus: выборка в потоке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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