|
|
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:36 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Я в его коде-огрызке даже инициализации ProxyList и CS не вижу. Мне надо медиумом заделаться что бы понять что он там еще накосячил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:38 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, ой да что там, 2-3 секунды вкинуть в среду данный код. Вот консольный вариант с ошибкой AbstractErrorHandler при вызове Resume на втором круге Код: 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. Ну и если поменять в конструкторе с false на true и убрать Resume ничего не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:48 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Хм)) Недоглядел, забыл CS := TCriticalSection.Create; написать. Теперь вроде всё работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:03 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный rgreat, ой да что там, 2-3 секунды вкинуть в среду данный код. Вот консольный вариант с ошибкой AbstractErrorHandler при вызове Resume на втором круге procedure Execute; override; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:09 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, а по итогу полная белиберда, не считая пинков под зад за обращение к компонентам из потока Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. out Код: sql 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:16 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
В общем код то неверную смысловую нагрузку несёт. Мы должны задавать действия для потока, к примеру имеем базу Array[0..9999] of string и к примеру нам нужно 8 потоков, дабы пройтись по базе. Для этого мы должны разделить в ручную базу для каждого потока (А не выделить сразу кучу потоков на одну функцию, и ждать что всё пройдёт удачно. Кретинизм 100лвл). Код: pascal 1. 2. 3. 4. 5. 6. 7. То есть, на один поток приходиться 1249 записей. И остаточных 7 = 8 * 1249 = 9992 + 7 = 9999 итераций Единственный и верный способ, выполнить разбор базы поточно, распределив действия по потокам равномерно. А не быть супер сонником который будет выхватывать из базы данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:25 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Тебя ptk[i].execute; вместо ptk[i].Start; не смутило? Потоки в коде как бы вообще не запускаются. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:30 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, Меня многое смущает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:37 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, а ты отредактировал сообщение. Да. Отладчик сходит сумма. Результатов нет. Все признаки проблемы использования компонентов в потоке Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:40 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный rgreat, а ты отредактировал сообщение. Да. Отладчик сходит сумма. Результатов нет. Все признаки проблемы использования компонентов в потоке И да, это не последняя проблема в этом кривейшем коде. В общем хватит трахать мне мозг вашими кривыми и сломанными костылями. Вот правильный подход. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:45 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Один begin лишний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 02:53 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, А ты читал вообще тему ? Читал вообще про TParallel.&For ? Ты не понял смысла данного цикла)))) Имеем 1) Потоки не запускает. 2) Потоки не делит. 3) Использует один пул, дожидаясь завершения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 03:06 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Ты пишешь какие-то слова не имеющие смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 03:12 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, значит ты не компетентная личность в данном вопросе, раз не знаешь как выполняется данная функция Вот кстати пример https://github.com/marvinbraga/FiremonkeyMDL/blob/00ce79851bf699626091f5c768572bc14a5b87c4/Marvin.Comps.MDL.Frame.Button.RaisedFlat.pas#L573 Или вот Код: 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. А не так, как ты себе придумал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 03:21 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Ты бы хоть протестировал мой пример перед тем как заявлять что он не работает. Интересно, как быстро тебя опять забанят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 03:41 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, создай Memo1, ProgressBar1 и Button1 на нём событие клик. Вот в общем Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. Твой поточный код в GUI умер. Потому что он не поточный. Ведь ты не знаешь как TParallel.&For работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 03:54 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Ты совсем слепой? автор// для консолького ПО - через TCriticalSection для "формочек" - через Synchronize. Мой пример КОНСОЛЬНЫЙ. Там Synchronize принципиально не работает ибо нет ни GUI ни GUI потока. Зачем ты его сломал, криво запихав туда работу с GUI? Блин, и зачем я всяких обормотов учить пытаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 04:01 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, Какой Synchronize ? он никогда не будет работать в функции, которая не поточная Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. Тот же самый эффект что и без Synchronize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 04:16 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Заканчивай уже свои сломаные костыли вокруг моего кода ставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 04:20 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Для тех кто в танке, с GUI. Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. При желании обновлять GUI можно без Synchronize, напромер по таймеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 04:48 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, rgreat, Вам не надоело половыми органами меряться? Выложите кто-нибудь ТС'у рабочий код в виде тестового проекта, видите, у него Ctrl+C не работает :) --------------------- @Tech N9ne, а на простых примерах из инета потоки не пробовал запускать? Поймешь принцип построения, поймешь и все остальное. Читал топег по диагонали, но ИМХО, критические секции в твоем случае будут тормозить работу потоков с GUI. Я бы просто отправлял сообщения из доп.потоков в основной либо посредством Queue , либо классическим PostMessage ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 09:05 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный X-Cite, Грубо говоря в этом топике, все льют воду, не смотря на счётчик. Не объясняя тс-у как правильно работать с данными в потоке, как ичто передавать. Как и что возвращать. Изначально он создал ведь тему, из за того что не понимал как массив- стринг передать в поток. И так далее. Просто у ТС настолько отсутствует понимание предмета, что, по-хорошему, надо объяснять с самых основ. Иначе это попытка задвинуть про Past Perfect Continuous тому, кто даже алфавит не выучил. Ну или можно дать готовый шаблон, который будет применяться бездумно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 10:22 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne Люди, спасибо вам за помощь, за примеры... Вы поймите, я хочу овладеть потоками... А вы мне таски предлагаете. Я впервые слышу о них.. Сейчас конечно почитал о них, что-то понял, что-то нет... При всём уважении, ребята, вопрос не о том, чем лучше чекать прокси. Да сами прокси это просто пример. Вопрос о потоках. Смотри... Поток - это инструмент, с помощью которого асинхронно решают какие-то задачи... У тебя задача проверить прокси, значит используя поток, ты можешь выполнить проверку асинхронно по отношению к коду, в котором вызываешь проверку. В этом случае поток должен решать ровно одну задачу, проверка ровно одного прокси. Просто в Delphi изначально сделали какой-то монстроузорный вариант с отдельным классом. Что вводит в заблуждение, когда надо именно выполнить работу асинхронно. А это значит, что если у тебя список из 100 прокси, то тебе придется для каждой проверки создавать поток, выполнять работу и уничтожать... Идем дальше.. Вариант с созданием и уничтожением 100 потоков так себе... слишком много ресурсов системы будет затрачено на создание и уничтожение потоков... Поэтому приходит в голову решение, а не создать ли 5-10 потоков, в которых и будет проверка этих 100 прокси... И тут мы приходим к пониманию, что нам надо пул потоков... И сами потоки уже не являются средством решения нашей задачи проверки... Они просто инструмент с помощью которого мы будем решать нашу задачу проверки 100 прокси.. Поэтому появляется новая абстракция - таски... Тебе важно выполнить задачу асинхронно... А уже как она будет сделана - неважно.. с помощью отдельного потока или в том же или еще как, это уже задача другого уровня. Но если хочется именно велосипеда... Писать свой пул потоков нет ни желания ни понимания... То можно на коленке с имитировать это примерно так... Тогда твоя задача немного перефразируется... При этом уже есть куча примитивов которые позволяют это сделать намного удобнее чем использование TStrinList. Например TQueue<T> Мне надо несколько потоков, которые будут разбирать очередь в которой лежат прокси и проверять их. Тогда реализация уже перефразированной задачи, с использованием концепции класса потока в Delphi, без примитивов ожидания будет выглядеть так... Важно, предлагаемый вариант ужасен именно с точки зрения применения современных подходов (когда не нужно знать как работает под капотом, а важнее знать как решать задачи с использованием той или этой технологии), но на коленке понять как работают потоки пойдет... Код: 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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. Заметь, ни одной глобальной переменной кроме стандартной, и то к ней нет обращения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 13:28 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39935786&tid=2038506]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 487ms |

| 0 / 0 |
