|
|
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
как продолжение этой темы Не хочется изобреть свой велосипед. Хотел уточнить у тех, кто пользует этот вариант, как вы передаете параметры запроса в поток: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 10:40 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
Док, 1 вариант - наиболее прозрачный как по мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 11:14 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
Вот такое читал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 22:06 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
stanilarВот такое читал? Пролистал статью, раньше ее не видел. Странная. 1. Вначале предлагается использование FreeOnTerminate, OnTerminate и Synchronize как панацею от всех бед, при этом не описываются связанные с этим грабли. Хотя статья времен D5, когда Synchronize работал через SendMessage, и граблей было поэтому меньше, но часть их была всё равно. 2. Потом, наконец, честно описываются обычные проблемы, которые возникают из-за использования вышепредложенного мусора, типа дэдлоков при WaitFor и Synchronize/OnTerminate, и героические пути их решения. При чем таким тоном, как будто эти муки - обычная необходимая вещь, рутина в жизни любого опытного программера. 3. И в конце - создание более-менее похожего на жизнеспособный примера без использования всего этого говна, и радостное заключение: "Мы достигли нашей цели!.. Не используется Synchronize. Потоки без необходимости не блокируются"! Да, неожиданный конец. Вернее, в реальной жизни всегда так - как ни пытайся сделать яичницу из теннисных шариков, всё равно придется сходить в магазин за яйцами. Но странно, когда статья изначально в споре зеленого и черного топит за зеленое, а заканчивается утверждением, что черное лучше. Вообще, впечатление, что автор статьи - мазохист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:38 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
По теме. 1-й вариант - нормальный. 3 параметра в конструктор потока, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 11:44 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
YuRockПролистал статью, раньше ее не видел. Странная.Вообще-то это хрестоматийная книга по потокам в делфи, необходимая каждому, кто хочет научится ими пользоваться. А то потом плодятся с альтернативными подходами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:45 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
white_niggerВообще-то это хрестоматийная книга по потокам в делфи, необходимая каждому, кто хочет научится ими пользоваться Я в тебе и не сомневался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:54 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
white_niggerВообще-то это хрестоматийная книга по потокам в делфи все это читано и не раз. В статье даны основы, но вопрос в другом YuRock3 параметра в конструктор потока, например Скажем, если я буду пользовать конструкцию примерно такого вида Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. есть ли какие подводные камни, типа необходимости использования ZeroMemory и проч.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 16:21 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
Док, Не знаю, я лично не люблю в структурах автоматические типы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 17:04 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
Док, А почему нe: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 17:11 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
DarkMasterА почему нe: "Не аккуратненько" © На самом деле, я на стендовых проектиках сейчас в поток передаю что-то типа Array of TMyRec, только у структуры поля простые (стринги, целые, пойнтеры и проч.), потому что будет необходимость передавать и блобы. Конечно, хочется сделать какой-нибудь универсальный наследник потока. Но боюсь утонуть в его коде. Похоже, придется отделять мух от котлет :) Дело для меня новое, опыта нет. Вот и экспериментирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 17:26 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
Док, Угу, а отдавать в поток array of Rec, который тоже где-то как-то заполняется - более красиво У меня хоть ясно видно, какой поток с какими параметрами зовется. А блобы и в MemoryStream можно запихнуть - я не думаю, что их у тебя (параметров в виде блоба), много будет - не самый распространненый вид данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 17:41 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
white_niggerхрестоматийная книга Вот потому и дана ссылка. Что касается вопроса, то у меня возникло ощущение что архитектура будущего решения притягивается к способу реализации. Зачем передавать какие-то параметры в поток, (что говорит о том, что бизнес-логика вне потока), когда можно синхронизировать датасурс с датасетом после завершения запроса (говоря по другому - передать всю бизнесс-логику в поток)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 17:46 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
YuRockВообще, впечатление, что автор статьи - мазохист. Дай ссылку на лучшее. Не все хотят тратить свое время на изучения граблей, хотя такие знания и приветствуются. Но тем, кто во всем разобрался и поделился своими познаниями с остальными - честь и хвала. YuRockпредлагается использование FreeOnTerminate, OnTerminate и Synchronize Как по мне, так в статье предлагается понять, как абракадабра видит работу паскалистов с потоками. Сие учебное пособие достаточно корректно описывает особенности работы стандартных библиотек. P/S/ Можно еще посоветовать Доку аналог omni thread под лазарь, чтоб под влиянием кода от гуру программирования его дзен поразил бы нас своей красотой! Но вот увы - под лазарь мне такие библиотеки неизвестны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 18:02 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
ДокКонечно, хочется сделать какой-нибудь универсальный наследник потока. Универсальность обычно ухудшает функциональность. Совсем универсально можно сделать так: Код: 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. Таким образом Params для передачи в конструктор потока можно создавать перед созданием объекта потока и сразу удалять, а можно вообще объект Params общий держать (или несколько), только некоторые данные в нем менять (если в одном потоке)... И ничего не надо будет синхронизировать никогда (касательно этих Params). Правда, если ты что-то огромное будешь в параметры пихать - то, конечно, два раза под это память выделять - тоже плохо. Но это - палка о двух концах - либо дублирование, либо синхронизация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 18:05 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
stanilarможно синхронизировать датасурс с датасетом после завершения запроса (говоря по другому - передать всю бизнесс-логику в поток)? Если "передать всю бизнесс-логику в поток" - то зачем тогда "синхронизировать датасурс с датасетом после завершения запроса"? Или я не понял нифига. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 18:09 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
YuRockСовсем универсально можно сделать так: спасибо, я примерно так и реализовал, только без выделения промежуточного класса TMyParams, запихав передаваемые аргументы во внутренние поля доп. потока. Пожалуй, отдам предпочтение наглядности в ущерб универсализму. Пусть лучше код будет индусским, зато проще потом сопровождать stanilarЗачем передавать какие-то параметры в поток, (что говорит о том, что бизнес-логика вне потока), когда можно синхронизировать датасурс с датасетом после завершения запроса (говоря по другому - передать всю бизнесс-логику в поток)? не догнал. Поясни, плз. stanilarМожно еще посоветовать Доку аналог omni thread под лазарь отказался от проприетарного чужого кода принципиально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 19:49 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
DarkMasterА блобы и в MemoryStream можно запихнуть - я не думаю, что их у тебя (параметров в виде блоба), много будет - не самый распространненый вид данных. бинарных м.б. и не так, а вот текстовых(с форматированием) - очень даже запросто. Эти фишки я решил реализовать через доп.поток, т.к. в нынешней реализации клиента сохранение данных по локалке иногда "подвешивает" гуи секунд на 5-7, что совсем не комильфо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 19:58 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
YuRockзачем тогда "синхронизировать датасурс с датасетом после завершения запроса" Показать данные на форме надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 20:00 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
stanilarYuRockзачем тогда "синхронизировать датасурс с датасетом после завершения запроса" Показать данные на форме надо?Откуда я знаю? Док в этих темах, вообще-то, занимается именно реализацией бизнес-логики в доп. потоках. Поэтому как-то странно звучит совет "перенести бизнес-логику в доп. поток". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 02:33 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
ДокПожалуй, отдам предпочтение наглядности в ущерб универсализму.Очевидно, у каждого своё представление о наглядности) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 02:35 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
YuRockреализацией бизнес-логики в доп. потоках Почему тогда поток данных(цитата: "передаете параметры запроса в поток") направлен в поток а не из потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 05:01 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
ДокПоясни Если бизнес-логика в потоке, то синхронизировать надо не передачу параметров в поток, а отображение полученных в потоке данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 05:17 |
|
||
|
Lazarus: выборка в потоке
|
|||
|---|---|---|---|
|
#18+
stanilarПочему тогда поток данных(цитата: "передаете параметры запроса в поток") направлен в поток а не из потока?Потому, что эти параметры нужны потоку перед началом работы, а не после? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2018, 13:23 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39623139&tid=2041061]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 430ms |

| 0 / 0 |
