|
|
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите пожалуйста, правильно ли я запускаю потоки. Мне нужно 8 потоков, по этому цикл for 1-8. И еще, не мало важный вопрос. Где вопросительные знаки, там я не понимаю, как обратится к конкретному элементу массива... Подскажите пожалуйста. Сейчас такой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Как дать каждому потоку, по скачки 1 файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 17:11 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9neКак дать каждому потоку, по скачки 1 файла? Передать ему i в конструктор. Или, раз уж создаёшь в заторможенном состоянии - в public member. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 17:56 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
А лучше сразу делать правильно и изолировать поток от внешних переменных. Т.е. скачивать в собственный объект, а в главном методе загружать в массив IMG. Либо вообще не связываться с загрузкой изображения в потоке (разве что картинки гигантские - но тут еще надо смотреть, поддерживает ли TsImage многопоточность). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 18:08 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
TQueue поможет делить файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 18:50 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Кто мешает при создании потока указать, какой и куда файл скачивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 19:16 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Также еще надо подумать, как определять момент завершения всех потоков, рассмотреть случай досрочного закрытия программы и потихоньку прийти к выводу, что FreeOnTerminate - зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 19:28 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
goldmi45 Кто мешает при создании потока указать, какой и куда файл скачивать? Например файлы могут быть сильно разного размера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2020, 19:37 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne, конкретно по вопросу Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2020, 09:03 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne, Параметры можно передавать в конструкторе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2020, 06:33 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Zelius, Спасибо. Скажите пожалуйста, вот например мне нужно чекнуть прокси на валид... У меня их n количество. Как я могу распределить n кол-во проксей, на n кол-во потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2020, 22:12 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Создай список проксей а потоками разбирай из списка по одному на проверку пока не закончатся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 01:10 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat Создай список проксей а потоками разбирай из списка по одному на проверку пока не закончатся. Я немного не понимаю саму механику работы) К примеру 1000 проксей, 5 потоков... если я сделаю так же как в прошлый раз, с переменной, то чекнуться только 5 проксей) так как 5 потоков.. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 01:31 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Сделай в потоке цикл проверок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 01:48 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat Сделай в потоке цикл проверок. Так я вот и не разберу, как мне проверять, какие strings уже чекались, а какие нет.. Я понял что в цикле.. Ладно, спасибо, видать просто поспать нужно, утро вечера мудреннее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 02:01 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne rgreat Сделай в потоке цикл проверок. Так я вот и не разберу, как мне проверять, какие strings уже чекались, а какие нет.. Я понял что в цикле.. Ладно, спасибо, видать просто поспать нужно, утро вечера мудреннее) Зачем вам потоки, если вам надо решать задачи, которые успешно решают таски... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Кол-во одновременно выполняемых задачи будет зависеть от кол-ва виртуальных процессоров (CPU * Core) * магическая константа, но можно задать для пула ограничение магической константы = 1 если очень надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 03:04 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Потоки и таски - почти одно и тоже. И если уж идти в сторону прослоек над TThread и синтаксического сахара тогда надо парралель фор делать. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 05:44 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, Возможно вы меня недопоняли? Про таски впервые слышу) Код: pascal 1. Всё что мне нужно это понять, как не дать определённому количеству потоков, обращаться к одному и тому же strings[]. Я могу сделать потоки, но только с количеством равному stringlist.count; И каждый поток будет обрабатывать свой strings[]. Но stringsов может быть и 1000 и 10000.. Но как сделать любое колчество потоков, и заставить работать со строками из stringlist, избегая одновременного обращение к одному и тому же strings[]. Если код который вы привели, это прямой ответ моему вопросу, тогда простите, я еще глуп, что бы до конца понять, что к чему там). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 06:18 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne, Если вы до сих пор ничего не поняли - наймите програмиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 06:23 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite Кол-во одновременно выполняемых задачи будет зависеть от кол-ва виртуальных процессоров (CPU * Core) * магическая константа, но можно задать для пула ограничение магической константы = 1 если очень надо... Может так: TThreadPool.Default.SetMinWorkerThreads(100) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2020, 12:20 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
DmSer X-Cite Кол-во одновременно выполняемых задачи будет зависеть от кол-ва виртуальных процессоров (CPU * Core) * магическая константа, но можно задать для пула ограничение магической константы = 1 если очень надо... Может так: TThreadPool.Default.SetMinWorkerThreads(100) ? Опытным путем SetMaxWorkerThreads - Задает ограничение сверху. Максимальное кол-во одновременно выполняемых задач в указанном пуле. По умолчанию Cpu * Core * 25; Не может быть меньше, чем Cpu * Core SetMinWorkerThreads - Кол-во задач, которое может быть принято в работу до увеличения пула. По умолчанию Cpu * Core. Не может быть больше чем указано в SetMaxWorkerThreads. Т.е. если у вас 1 процессор и 4 ядра, то по умолчанию MaxWorkerThreads = 1 * 4 * 25 = 100 MinWorkerThreads = 1 * 4 Это значит что одновременно может выполняться не более 100 задач, при этом только 4 задачи могут быть запущены сразу... остальные поместятся в очередь и будут запущены либо после выполнения одной из четырех, либо через магическое время (вроде 1 секунда) будут запускаться по одной при условии, что CPU не загружен на 80%, увеличивая кол-во потоков для выполнения задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 00:40 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite Опытным путем SetMaxWorkerThreads - Задает ограничение сверху. Максимальное кол-во одновременно выполняемых задач в указанном пуле. По умолчанию Cpu * Core * 25; Не может быть меньше, чем Cpu * Core Cpu и Core в Вашей формуле что означают? В System есть только переменная CPUCount (ей присваивается SysInfo.dwNumberOfProcessors), означающая количество логических ядер (Number of CPU Cores detected) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 04:48 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Ну вручную выставьте MaxWorkerThreads = 200.... Будет вам 200 задач... DmSerCpu и Core в Вашей формуле что означают? В System есть только переменная CPUCount (ей присваивается SysInfo.dwNumberOfProcessors), означающая количество логических ядер (Number of CPU Cores detected) Cpu - физические процессоры Core - ядра на них... т.е. сервер состоящий из 4 процессоров по 6 ядер = 4 * 6 = 24 виртуальных процессоров = dwNumberOfProcessors = CPUCount ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 15:58 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Погуглив нашёл пример, что нужно использовать критическую секцию, что бы потоки не обращались к одной и той же строке из 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. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 17:22 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite Ну вручную выставьте MaxWorkerThreads = 200.... Будет вам 200 задач... ... У меня на 1 ядро, приходиться по 2 потока. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 17:26 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne, Вам же сказали, что для решения вашей задачи не нужно использовать голые потоки... Намного проще и красивее будет использовать Таски... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 17:43 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite Tech N9ne, Вам же сказали, что для решения вашей задачи не нужно использовать голые потоки... Намного проще и красивее будет использовать Таски... Хорошо, пусть таски, но я же должен понять, почему у меня не работают потоки. Иначе как мне учится на ошибках?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 18:01 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne Хорошо, пусть таски, но я же должен понять, почему у меня не работают потоки. Иначе как мне учится на ошибках?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 19:52 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne, Во первых из потока нельзя обращаться к компонентам. В третьих ты не распределяешь данные между потоками. Вот краткий пример Код: 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. На вход Memo1 Код: 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. На выводе будет Memo3 Код: 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. 110. 111. 112. 113. 114. 115. 116. 117. Memo2 Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 20:23 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, Какой ужас. У вас все засинхронизировпно. О какой параллельности может идти речь. Это яркий пример как делать не нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 22:00 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite, Неверно. По результатам можно просмотреть что всё идёт синхронизировано. Конечно же функцию parseIp надо убрать в функцию вложения потока. Но в принципе для примера очень годный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 22:35 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite, Грубо говоря в этом топике, все льют воду, не смотря на счётчик. Не объясняя тс-у как правильно работать с данными в потоке, как ичто передавать. Как и что возвращать. Изначально он создал ведь тему, из за того что не понимал как массив- стринг передать в поток. И так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 22:38 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite, вы думаете это я так красиво ручками оформил Для форума ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Нет, увы. Это он синхронно отработал все потоки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 22:40 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
X-Cite ВсеРазумный, Какой ужас. У вас все засинхронизировпно. О какой параллельности может идти речь. Это яркий пример как делать не нужно... К сожалению, сейчас в интернете очень сложно найти нормальные статьи по многопоточному программированию в Delphi, зато примеров таких шедевров полно. Есть Тейксейра с Пачекой, но там лишь основы. Видимо, этого сегодня недостаточно. Грустно :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 23:04 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
DmSer, А вы пользуетесь логикой - лучше воду лить? Давайте, приведите правильный пример. Хотя если бы могли,давно привели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 23:21 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Вы хоть то сами понимаете суть потоков ? Смысла потока запустить, обработать какие - то данные. И вернуть данные в главный поток. Нет, вы этого не понимаете. Не понимаете что все потоки работают синхронно. Что свидетельствует опять же вывод ВсеРазумный X-Cite, вы думаете это я так красиво ручками оформил Для форума ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Нет, увы. Это он синхронно отработал все потоки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 23:22 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Не понимаете что все потоки работают синхронно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 23:31 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
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. 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. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 23:42 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#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. 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. Код: 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. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. Кое где не совсем точно, но это погрешность, ибо при нескольких запусках там может быть Код: sql 1. 2. 3. А может и не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2020, 23:47 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный DmSer, А вы пользуетесь логикой - лучше воду лить? Давайте, приведите правильный пример. Хотя если бы могли,давно привели. Для Вас я приводить ничего не буду, Вы и сами все знаете лучше всех. С Архангельским небось знакомы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 00:29 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Нет, вы этого не понимаете. Не понимаете что все потоки работают синхронно. Не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 00:31 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#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. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:08 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Tech N9ne, И что у вас не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:28 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat Tech N9ne, И что у вас не работает? Тот код что выше, должен по моей логике в мемо добавлять строки. Номер строки, айпи и порт. Но ничего не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:33 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
Воспользоваться отладкой не предлогать? ;) Брэйкпоинт оставить на старте .execute, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:34 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#18+
rgreat, вставил его код, на втором цикле создания TMyThread выкидывает Код: pascal 1. 2. 3. 4. http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1392 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2020, 01:34 |
|
||
|
Потоки.. Несколько вопросов.
|
|||
|---|---|---|---|
|
#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?all=1&fid=58&tid=2038506]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
139ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 477ms |

| 0 / 0 |
