|
|
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11 Если перенести строки Переносить нужно тоже с умом... Покажи хоть. ЗЫ. Из потока вообще не лезь к визуальной части. Всё это лишнее. X11 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А это вообще можно делать до запуска потока: X11 Код: pascal 1. Оставь в потоке только создание соединения, выполнение запроса и заполнение TStringList. Далее отдашь через синхронизацию этот список для заполнения списка контрола и после уже можно всё зачищать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 11:50 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
wadman Покажи хоть. не понял, что именно показать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:07 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
wadman Оставь в потоке только создание соединения а я не создаю в потоке никаких соединений, я думаю, что это не обязательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:09 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
wadman Оставь в потоке только создание соединения, выполнение запроса и заполнение TStringList. тогда получится два цикла 1. Заполнение TStringList. 2. Заполнение TcxCheckComboBox из TStringList. стоит ли овчинка выделки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:13 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11 А какую роль выполняет TThread.Synchronize в этом коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:32 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
да, какую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:39 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11 стоит ли овчинка выделки? Естественно. В 1-ой обращение к БД, 2-я операция заметно быстрее. X11 а я не создаю в потоке никаких соединений, я думаю, что это не обязательно X11 то вываливает несколько AV и ошибок, в том числе и при закрытии формы Удивительное упорство... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:40 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11 да, какую? Никакой роли он здесь не выполняет. Его есть смысл вызывать только из доп. потока. А в последнем варианте доп.поток исчез. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 12:46 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
wadman Оставь в потоке только создание соединения, выполнение запроса и заполнение TStringList. если работа с БД будет в отдельном потоке, то в итоге визульный список не заполнится... вот как получается: запускаем отдельный поток, где создаем соединение, датасет, обращаемся к базе и наполняем StringList Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. после task.Start программа ждать не будет и сразу перейдет к циклу заполнения визуального списка из TStringList`а. А TStringList пока ещё наполняется из базы в отдельном потоке... как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:03 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11как быть? Выкинуть из картины StringList. В потоке получил строку - отослал её главному потоку на показание, читаешь следующую. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:06 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov отослал её главному потоку на показание Чуть больше модно информации? Куда именно отправять, как? С помощью какого функционала, Messages? Нужно создать ещё какую-то процедуру, которая будет ловить эти строки в главном потоке и заполнять визуальные списки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:10 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov В потоке получил строку - отослал её главному потоку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:16 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
В общем, лучше оставить как было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:17 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11Куда именно отправять, как? Туда, где эти данные нужны и так как это место готово их принимать. X11С помощью какого функционала, Messages? Если эти твои "списки" собираются для отображения в GUI - да. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:20 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11В общем, лучше оставить как было Да, "работает - не трогай" для чайников всегда актуально. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 13:33 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11 как быть? Тут и можешь дернуть синхронизацию, после закрытия запроса. Операция на фоне остального минимальная по времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2020, 14:19 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
Использование дополнительных потоков для параллельной загрузки данных из БД даст положительный эффект, например, в следующих случаях: 1) база данных удалённая, большое время тратится на ожидание отправки и приёма запросов. 2) база данных локальная, но хранится на HDD, данные ещё не загружены в кэш в ОЗУ и сильно фрагментированы. При сборе фрагментированных данных по всей поверхности HDD может уйти уйма времени. Каково будет в этом сценарии ускорение от параллельной загрузки данных не могу сказать, как повезёт. 3) SQL-запросы написаны плохо, либо в базе данных не хватает индексов для быстрого поиска. Т.е. запросы выполняются долго. При этом СУБД способна такие запросы выполнять параллельно. Если же база локальная и списки хранятся компактно (либо находятся в кэше в ОЗУ), а запросы выполняются эффективно, то скорее всего никакого ускорения от параллельной загрузки не будет. Очень важный момент: параллельная загрузка в каждом потоке должна выполняться через отдельное подключение к базе данных. При этом, если эти подключения создавать каждый раз заново в доп. потоках, то на создание подключений может уйти времени больше, чем на загрузку списков. Подключения должны быть созданы заранее. Для этого следует использовать пул готовых подключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 12:29 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
DmSer Очень важный момент: параллельная загрузка в каждом потоке должна выполняться через отдельное подключение к базе данных И не важно, какая библиотека доступа? А может FibPlus и/или DevArt потокобезопасны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 13:31 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
DmSer Подключения должны быть созданы заранее. Для этого следует использовать пул готовых подключений. Вот у TUniConnection (UniDAC DevArt) есть свойство PoolingOptions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 13:32 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11А может FibPlus и/или DevArt потокобезопасны... Потокобезопасность тут ни при чём. СУБД должна поддерживать асинхронное API иначе сквозь одно соединение больше данных не пропихнуть. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 13:49 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
Firebird 3, я надеюсь, поддерживает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 15:16 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11Firebird 3, я надеюсь, поддерживает? Нет. Полная сериализация вызовов в рамках коннекта. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 15:20 |
|
||
|
Заполнение несколькоких списков в отдельных потоках
|
|||
|---|---|---|---|
|
#18+
X11, можно многими потоками данные из базы извлекать через несколько соединений. это скорее всего будет быстрее. поможет ли это заполнить форму быстрее - сложный вопрос, потому как мне кажется что основные тормоза у тебя будут не с базой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2020, 21:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39964382&tid=2038259]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
187ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 541ms |

| 0 / 0 |
