|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Есть коллекция с датами. нужно выполнить процедуру для каждой даты в несколько потоков но в строгом порядке (сортировка по дате). Т.е. запускается сразу 4 потока с датой 1,2,3,4, время выполнения разное, закончилась обработка 2, сразу началась 5 и т.д. Есть ли стандартный метод в дотнете (PLINQ там всякий)? Или нужно самому управлять созданием нового потока? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 12:51 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Можно Task использовать. https://metanit.com/sharp/tutorial/12.2.php ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 12:57 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Код: c# 1. 2.
Вроде всё c 2012 года ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 13:16 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Это я и имел ввиду про ручное управление, а через таски, await или другие классы (хоть через бэкграудворкеры) не имеет принципиальной разницы. как написать я себе представляю: метод выдающий следующую дату из коллекции через лок-объект, функция создающая поток с обработкой должна быть рекурсивна пока есть даты в коллекции и функцию вызвать сразу нужно число раз = желаемому кол-ву потоков. я просто думал что есть уже готовое решение в PLINQ или Parallel.* чтобы не изобретать велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:25 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
или просто нужное кол-во потоков с функцией внутри которой цикл пока даты не кончались. даты через лок-объект возвращаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:29 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Ограничить количество потоков можно с помощью ThreadPool.SetMaxThreads (Int32, Int32) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 14:35 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Task'и + шедулер на 4 потока с очередью выполнения . пример такого шедулера есть в MSDN: https://msdn.microsoft.com/ru-ru/library/ee789351(v=vs.100).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 15:33 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
да вроде накидал сейчас через семафор и таски Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 15:51 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Я тебе дал 2 строки. Ты написал 100 строк с семафорами))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 15:58 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima TОграничить количество потоков можно с помощью ThreadPool.SetMaxThreads (Int32, Int32) Да. await как раз через него. Только ему мешать не надо и ограничивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:00 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabas, Я тебе дал 2 строки. Ты написал 100 строк с семафорами))))) а я не понял, как задать у тебя кол-во потоков. в ThreadPool.SetMaxThreads есть ограничения которые мне не подходят. т.к. сама обработка будет в БД, а не на клиентской машине и нужно иметь возможность полностью управлять параллельностью, а не зависить от кол-ва процессоров на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:02 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasчерез лок-объект, Потокобезоп.коллекцию возьми. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:02 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasа я не понял, как задать у тебя кол-во Зачем? Это пул потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:04 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabas, Я тебе дал 2 строки. Ты написал 100 строк с семафорами))))) поэтому и спрашивал , т.к. не хотел изобретать велосипед, как сделать я знал и не один вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:04 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasобработка будет в БД, В смысле? В сиквеле или Оракле? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:06 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasPetro123barrabas, Я тебе дал 2 строки. Ты написал 100 строк с семафорами))))) поэтому и спрашивал , т.к. не хотел изобретать велосипед, как сделать я знал и не один вариант. Тогда начни писать await, а то вопросы странные. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:07 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123, при чем тут await вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:10 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasчерез лок-объект, Потокобезоп.коллекцию возьми. ну да, можно и ConcurrentQueue конечно, ихмо не принципиально и тяжелее объект, там большая часть функционала не нужна мне в данной случае. внутри там такой-же лок меня именно запуск интересовал в нужной последовательности с заданным кол-вом потоков, остальное ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:13 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Roman Mejtes, Он управляет очерёдностью. Внутри task.run ставит в пул потоки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:13 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasихмо не принципиально Принципиален лаконичный код. Если нужно, на лямбдах. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:16 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasобработка будет в БД, В смысле? В сиквеле или Оракле? а есть принципиальная разница для данной темы? в данном случае в оракле, но с тем же успехом можно заменить на сторонний webservice. смысл что реальная тяжелая обработка происходит удалённо и не должна зависеть от параметров запускающей машины. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:16 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasихмо не принципиально Принципиален лаконичный код. Если нужно, на лямбдах. отладка неудобна :), некуда брейкпоинт поставить ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:17 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, В оракле JOB на своём ЯП. Делай. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:19 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Какие бряки в потоках? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:20 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123Roman Mejtes, Он управляет очерёдностью. Внутри task.run ставит в пул потоки. если не сложно, измени мой пример, я больше plsql занимаюсь и "новые" фишки дотнета не сильно юзаю, по верхам прочитал, но что-то не складывается как можно через await решить с точным заданием кол-ва потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:22 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Извини, свой проект есть. Готовый код альтруисты бывают, но редко. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:26 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas Код: c# 1. 2. 3. 4. 5.
ИМХО Не очень хорошая идея повисать на Wait() внутри таска. Этим ты поток занимаешь из трэдпула. Лучше при старте запустить 4 таска, а внутри таска цикл: извлечь очередной необсчитанный элемент taskList[] и обсчитать. Т.е. тасков столько, сколько надо потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:29 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Как вариант Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:31 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabas, В оракле JOB на своём ЯП. Делай. как на plsql и джобах сделать я знаю. но в данном конкретном случае мне нужно консольное приложение, которое будет запускаться в существующей инфраструктуре (принимать определенные уже параметры из вне, писать лог в нужном формате и т.д.), со своим шедулером, который все это обеспечивает, который умеет прибивать приложения, а останавливать джобы нет. если отдать все в БД, то убив приложение, процесс не остановится. в общем, есть готовая инфраструктура работающая и данная нам в ощущениях и выбор решения обусловлен именно этим. Я конечно ценю советы, серьёзно, но вопрос был именно про дотнет. как я уже сказал, что найденное решение может тиражироваться и на сторонние web-сервисы ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:32 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima TЛучше при старте запустить 4 таска, а внутри таска цикл: извлечь очередной необсчитанный элемент taskList[] и обсчитать. Т.е. тасков столько, сколько надо потоков. Тоже так подумал, но возникает (небольшая) проблема на старте (см.код выше) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:34 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima Tbarrabas Код: c# 1. 2. 3. 4. 5.
ИМХО Не очень хорошая идея повисать на Wait() внутри таска. Этим ты поток занимаешь из трэдпула. Лучше при старте запустить 4 таска, а внутри таска цикл: извлечь очередной необсчитанный элемент taskList[] и обсчитать. Т.е. тасков столько, сколько надо потоков. понятно, такой вариант описывал выше, но почему-то остановился не на нем. наверное действительно будет лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:35 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabas, Извини, свой проект есть. Готовый код альтруисты бывают, но редко. Удачи! да без проблем. спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:36 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
так всего 4 потока. Код: c# 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.
все в свою очередь запустились (return string.Format("{0} - {1} [{2}]", OrderNum, RunNum, SleepSec);) 3 - 3 [3] 2 - 2 [5] 4 - 4 [8] 1 - 1 [10] 6 - 6 [7] 5 - 5 [12] 8 - 8 [8] 7 - 7 [10] 10 - 10 [4] 11 - 11 [1] 12 - 12 [3] 9 - 9 [10] 16 - 16 [4] 13 - 13 [10] 14 - 14 [12] 15 - 15 [11] 17 - 17 [7] 18 - 18 [6] 19 - 19 [10] 20 - 20 [14] ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:49 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
LRDima TЛучше при старте запустить 4 таска, а внутри таска цикл: извлечь очередной необсчитанный элемент taskList[] и обсчитать. Т.е. тасков столько, сколько надо потоков. Тоже так подумал, но возникает (небольшая) проблема на старте (см.код выше) Потому что ты неправильно это написал Код: c# 1. 2. 3. 4.
надо так Код: c# 1. 2.
В этом случае не надо дожидаться кто раньше стартанет, т.к. первый запустившийся начнет выполнять первое задание. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:50 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima TВ этом случае не надо дожидаться кто раньше стартанет, т.к. первый запустившийся начнет выполнять первое задание. Нет Дима, первый запустившийся не обязательно успеет взять первое задание, в этом то и проблема... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:53 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
LRDima TВ этом случае не надо дожидаться кто раньше стартанет, т.к. первый запустившийся начнет выполнять первое задание. Нет Дима, первый запустившийся не обязательно успеет взять первое задание, в этом то и проблема... Внимательно посмотри на код 20903233 Я не про первого созданного, а именно про первого запустившегося. Номер первого задания надо получать внутри таска, а не снаружи. В этом проблема твоего кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 16:56 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima TВнимательно посмотри на код 20903233 Я не про первого созданного, а именно про первого запустившегося. Номер первого задания надо получать внутри таска, а не снаружи. В этом проблема твоего кода. Так как ты предлагаешь у меня было с самого начала, результат мне не понравился, т.к. я не про "первого запустившегося", а про "первого запускаемого", понимаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 17:02 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Объясните дураку чем не подходит Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 17:14 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Pu4koffОбъясните дураку чем не подходит Код: c# 1.
у еее всем подходит ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 17:23 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Pu4koffОбъясните дураку чем не подходит Код: c# 1.
+5 Вроде именно для таких. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 17:31 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima T, вот как еще можно решить проблему со стартом (сигнализировать из задания, когда оно "подхватило" свой первый номер) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 17:40 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Pu4koffОбъясните дураку чем не подходит Код: c# 1.
Нет гарантии, что будет в нужном порядке. Метод AsOrdered ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 18:46 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
LRDima T, вот как еще можно решить проблему со стартом (сигнализировать из задания, когда оно "подхватило" свой первый номер) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Зачем лишний тормоз? Не надо тут никакой синхронизации. Похоже тебя смущает что Console.WriteLine() отрабатывает не так как ты ожидаешь. Это проблема вызова Console.WriteLine() и не более того. Замени Console.WriteLine() на добавление в ConcurrentQueue<string> и в конце выведи содержимое. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 19:35 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
refreg, Дак в него нужно отдавать коллекцию на одну дату. Иначе вообще никакой параллельности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 19:37 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Т.с. бы ещё таймштамп ввёл и просил очерёдности выполнения)). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 19:40 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Dima TЗачем лишний тормоз? Не надо тут никакой синхронизации. Похоже тебя смущает что Console.WriteLine() отрабатывает не так как ты ожидаешь. Это проблема вызова Console.WriteLine() и не более того. Замени Console.WriteLine() на добавление в ConcurrentQueue<string> и в конце выведи содержимое. Да нет же)) Гипотетически "строгость" может быть необходимой и на старте по номерам заданий/потоков, т.е., чтобы задание/поток№1 обрабатывал первый элемент, №2 - второй, и т.д. Вот я и "усилил" условие задачки (больше из эстетических соображений), чтобы не было стартовой "путаницы", когда, к примеру, первый елемент хватает задание/поток№3, а №1 достается второй элемент... Впрочем, спорить что правильно а что нет не имеет смысла, т.к. мы не знаем зачем ТСу такой "строгий порядок". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 20:08 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
какой поток из пула запустит первую дату не важно. важно чтобы моментом старта обработки у меньшей даты был меньше или равен следующей по порядку. а причина довольна простая, чтобы можно было остановить процесс обработки и точно сказать, что обработалось от сих до сих, а а не в разнобой. до этого код был написан немного не оптимально, бралось нужное кол-во дат и запускалось одновременно, дожидались код-да все завершаться, потом следующая партия. получалалось что потоки какое-то время простаивают, тк время обработки может быть разным. вот заметил и решил исправить. переписал на Parallel.Foreach(<ConcurrentQueue>, new ParallelOptions { MaxDegreeOfParallelism = 4 }, item => {}) погонял тесты, вроде все норм, хотя тут есть комент что порядок не гарантирован. по идее для получения элемента из очереди используется спецметоды, а foreach может использовать просто IEnumerable, тогда хз, гарантируется ли соблюдение очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:19 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
время обработки разное но не кардинально, т.е. первая дата не будет обрабатываться когда уже в другом потоке обрабатывается 20я. поэтому допустимо такое упрощение имеет право на .. и опять же есть готовая инфраструктура запуска приложения и управления параметрами. ну и опять же прерывать и перезапускать будет человек и читать лог тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:25 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Так условие очерёдности в параллельной работе ты сам выдумал? Заняться тебе нечем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:27 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasпрерывать и перезапускать будет человек и читать лог тоже. Вот и приведи задачу с точки зрения пользователя, а не ту что ты сам придумал. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:30 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
refregPu4koffОбъясните дураку чем не подходит Код: c# 1.
Нет гарантии, что будет в нужном порядке. Метод AsOrdered в PLINQ не нельзя задать ЛЮБОЕ число потоков, они зависят от кол-ва процессоров на клиенте Точно нет гарантии с ConcurrentQueue? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:36 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabas, Так условие очерёдности в параллельной работе ты сам выдумал? Заняться тебе нечем. нет, оно было, просто реализовано не оптимально (обработка партиями и простой более быстрых потоков). изменив время обработки сократилось минут 8-10, не час сорок а полтора стало на целевом периоде. это хоть и не много, но окончания процесса ждут люди чтобы начинать следующие действия и у них есть жесткие временные рамки в рамках закрытия месяца и формирования всех документов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:43 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasпрерывать и перезапускать будет человек и читать лог тоже. Вот и приведи задачу с точки зрения пользователя, а не ту что ты сам придумал. пользователь запускает процедуру расчета конечной стоимости в каждой операции за период, период дробится по дням для визуализации и для понимания что можно потом работать с определенным меньшим периодом если что-то пошло не так. Описывать все ньюансы и обсуждать все бизнес-процессы нет желания. просто не очень понятно какое имеет отношение к изначальному вопросу. как раз формулирование абстрактной задачи и приводит к получению реальных ответов по теме, а вы уводите тему в другую сторону , но это вообще фишка данного форума и вообще рунета :). в принципе я получил ответы, повторюсь, меня интересовало именно стандартное решение, которое я не знал, как написать рабочий код на многопоточных примитивах я занал вполне, но как и вы люблю лаконичность (не и ущерб читаемости и поддержке конечно) В общем всем спасибо большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:54 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasне час сорок а полтора А ты не сравнивал решения СубдJob ---- АппСерверКоллекции. Вдруг там на порядок быстрее? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:57 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasно это вообще фишка данного форума и вообще рунета :). Конечно. Тут люди за хобби, а не за деньги решают ваши задачи. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 09:59 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasкакой поток из пула запустит первую дату не важно. важно чтобы моментом старта обработки у меньшей даты был меньше или равен следующей по порядку. а причина довольна простая, чтобы можно было остановить процесс обработки и точно сказать, что обработалось от сих до сих, а а не в разнобой. Понятно, а я уж подумал, что это имеет отношение к автоматизации какого-то производства. Например, на кладбище есть четыре бригады гробокопателей, от лучшей 1-й (самая быстрая, аккуратная, наименее пьющая и т.п.) до худшей 4-й (пьяницы, прогульщики и т.п.), и вот надо оптимально распределять периодически поступающие пачки с энным количеством (иногда меньше 4) заявок))) Ну, или четыре станка в цеху разной эффективности (разное энергопотребление, скорость и точность изготовления), и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 10:01 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasно это вообще фишка данного форума и вообще рунета :). Конечно. Тут люди за хобби, а не за деньги решают ваши задачи. Удачи! ветка "работа" немного в другом месте, удачи!!! и хорошего настроения ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 10:19 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasно это вообще фишка данного форума и вообще рунета :). Конечно. Тут люди за хобби, а не за деньги решают ваши задачи. Удачи! ради интереса зашел в профиль посмотреть ваши темы, походил по первой странице, не увидел где вы предлагаете вознаграждение за ответы на ваши вопросы, немного в замешательстве :) но вы держитесь там... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 10:25 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Вы тоже держитесь). На улицу и в публичные места, форумы не выходите. Вас таких 1%, кто спрашивая на форуме, на него и пинает (обобщает). А на заправке если предложат чаю не по делу, вы сразу в профиль полезете). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 10:38 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
LRотношение к автоматизации какого-то производства. Ну, я в его профиль не лазил. А по тз понял так, что нарезается пачка записей по датам grouo by А далее, в очередь, пул потоков. А очерёдность в пуле не важна. Тогда быстрее на порядок. Если важна, то медленно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 10:46 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabas, Вы тоже держитесь). На улицу и в публичные места, форумы не выходите. Вас таких 1%, кто спрашивая на форуме, на него и пинает (обобщает). А на заправке если предложат чаю не по делу, вы сразу в профиль полезете). спасибо за совет, но думаю воздержусь. на форум я не пиняю, яж не мазохист, я сам, как можно заметить, люблю пофлудить иногда. особенности (большое число флуда) в рунете это факт, но я не говорил что это что-то омерзительное, это фишка я как раз и написал, имея опыт общения, что если хочешь ответ по теме, лучше сформулировать ее абстрактно, что-бы не читать что нужно все переписать и переделать, т.к. для того чтобы давать такие советы нужно быть 100% в теме всех деталей и процессов, а описывать всю подноготную это не вариант по трудозатратам. а профиль я посмотрел из образовательных целей, я думал что человек, который не дурак давать советы бесплатно, должен на своем примере показывать как это делается и возможно здесь это уже стало негласным правилом (как можно понять по моему профилю, я теперь очень редко посещяю форум), а я по старой привычке залез своим свиным рылом .... но видимо все проще, есть 1% нас и 1% вас, в остальном все в порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 10:58 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasне час сорок а полтора А ты не сравнивал решения СубдJob ---- АппСерверКоллекции. Вдруг там на порядок быстрее? порядок врятли, т.к. вся работа как раз в БД, клиент только вызывает ХП с параметрами (период,в данном случае день, и пара настроек). все миллионы записей обрабатываются внутри БД без закачки на клиент, разумеется. время организации цепочки вызовов бесконечно мало по сравнению в обработкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:12 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas, Да милый. Это старость. Я про принципы публичного форума вам напомнил не от себя лично. А вы как в анекдоте - Солдат! У вас сапоги не чищены! ))). Кончайте впадать в старость и брюзжание. Идите с миром. На форуме всё хорошо. Мы флудим только на технические темы....для молодых. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:14 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasPetro123пропущено... А ты не сравнивал решения СубдJob ---- АппСерверКоллекции. Вдруг там на порядок быстрее? порядок врятли, т.к. вся работа как раз в БД, клиент только вызывает ХП с параметрами (период,в данном случае день, и пара настроек). все миллионы записей обрабатываются внутри БД без закачки на клиент, разумеется. время организации цепочки вызовов бесконечно мало по сравнению в обработкой. Спс. Именно ваш опвт на земле я и хотел услышать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:15 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasЕсть коллекция с датами. нужно выполнить процедуру для каждой даты в несколько потоков но в строгом порядке (сортировка по дате). Т.е. запускается сразу 4 потока с датой 1,2,3,4, время выполнения разное, закончилась обработка 2, сразу началась 5 и т.д. Есть ли стандартный метод в дотнете (PLINQ там всякий)? Или нужно самому управлять созданием нового потока? А можно поинтересоваться, зачем такая задача? И для чего управлять очередностью запуска потоков в строгом порядке, если по идее время завершения недетерминировано и в общем случае не совпадает по порядку старта? Я бы делал так: Parallel.ForEach(список, Action). Количество потоков на усмотрение фреймворка. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:19 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Так, не дочитал до конца. Про Parallel.ForEach уже сказали )) Но я так и не понял, что это за такая бизнес-задача? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:22 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
JOBы в конкретном случае не приведут заметному ускорению обработки, но придется делать подсистему мониторинга и управления ими, т.к. клиент в простейшем случае отправляет ванвей вызов и дальше ничем не управляет. есть процесс запускаемый клиентов из UI (тут согласен будет удобнее, с учетом создания центра управления такими заданиями), есть вариант запуска из консольной программы по своему шедулеру и логами и уведомлениями стандартными для всех процессов компании,не только связанными с БД, коих много как и систем (тут скорее наоборот, нужно привязать сессию в приложению). иногда лучше потерять несколько секунд-минут, но иметь единообразную и всем участникам привычную архитектуру, чем каждую задачу решать по своему, пусть и наиоптимальнейшим образом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:23 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Arm79Так, не дочитал до конца. Про Parallel.ForEach уже сказали )) Но я так и не понял, что это за такая бизнес-задача? сама обработка происходит удалённо, а не на машине где организуется очередь, нагрузка на удаленный сервер не связана с кол-вом процессоров на клиенте, вот и все ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:26 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas... по своему шедулеру ...Свой не нужен, есть готовый, из "коробки": Using the Task Scheduler ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:32 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasиногда лучше потерять несколько секунд-минут, но иметь единообразную и всем участникам привычную архитектуру, чем каждую задачу решать по своему, пусть и наиоптимальнейшим образом. В этом всё дело. У меня проект поменьше чем у вас, но когда я отпустил потоки без всякой очерёдности и управляемости в кавычках, у меня время уменьшилось в 3 раза. Да. Это именно в моём контексте. Не в вашем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:38 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Алексей Кbarrabas... по своему шедулеру ...Свой не нужен, есть готовый, из "коробки": Using the Task Scheduler вот об этом и говорил выше задача должна быть сформирован абстрактна. вы серьезно думаете что тут кто-то не знает про виндовый шедулер? и люди бы писали свой (тут я участия почти не принимал), если бы удовлетворял нужным критериям, не в части запуска задач по расписанию, а именно управления задачами запуска, логами и уведомлениями разных приложений (как своих там и сторонних)и скриптов, цепочной задач (последовательными и параллельными группами) с настройкой поведения в зависимости от резулткода, с возможностью через удаленный UI продолжить прерванную цепочку в нужного места и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:46 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasАлексей Кпропущено... Свой не нужен, есть готовый, из "коробки": Using the Task Scheduler вот об этом и говорил выше задача должна быть сформирован абстрактна. вы серьезно думаете что тут кто-то не знает про виндовый шедулер? и люди бы писали свой (тут я участия почти не принимал), если бы удовлетворял нужным критериям, не в части запуска задач по расписанию, а именно управления задачами запуска, логами и уведомлениями разных приложений (как своих там и сторонних)и скриптов, цепочной задач (последовательными и параллельными группами) с настройкой поведения в зависимости от резулткода, с возможностью через удаленный UI продолжить прерванную цепочку в нужного места и т.д. причем через UI (управлеющего удаленной службой) понятного для простого юзера, чего про виндовый шедулер не скажешь совсем. типа запустить задачу, простомтреть журнал запусков с фильтрами, по клику получить лог, перезапустить/продолжить(в случае с задачами в которых много действий остановленных при ошибке в одном из и т.д. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 11:52 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasвот об этом и говорил выше задача должна быть сформирован абстрактна. вы серьезно думаете что тут кто-то не знает про виндовый шедулер? Агрессивный вы наш. Этот топик не только для вас. Я как новичок), с удовольствием прочту про эту возможность. Потолерантнее немного). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:07 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasвы серьезно думаете что тут кто-то не знает про виндовый шедулер?Да. Если люди не в состоянии написать банальный ThreadPool, не задавая вопросов на форуме, то вполне вероятно и такое. barrabas... причем через UI (управлеющего удаленной службой) понятного для простого юзера, чего про виндовый шедулер не скажешь совсем. типа запустить задачу, простомтреть журнал запусков с фильтрами, по клику получить лог, перезапустить/продолжить(в случае с задачами в которых много действий остановленных при ошибке в одном из и т.д. )Написать нужный UI для "виндового шедулера", вроде как, проще, чем писать всё с "нуля". Да и его родной UI, всяко, будет полезен. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:18 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123barrabasвот об этом и говорил выше задача должна быть сформирован абстрактна. вы серьезно думаете что тут кто-то не знает про виндовый шедулер? Агрессивный вы наш. Этот топик не только для вас. Я как новичок), с удовольствием прочту про эту возможность. Потолерантнее немного). приношу пардоны, не хотел обидеть никого. просто совпало :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:19 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Алексей Кbarrabasвы серьезно думаете что тут кто-то не знает про виндовый шедулер?Да. Если люди не в состоянии написать банальный ThreadPool, не задавая вопросов на форуме, то вполне вероятно и такое. barrabas... причем через UI (управлеющего удаленной службой) понятного для простого юзера, чего про виндовый шедулер не скажешь совсем. типа запустить задачу, простомтреть журнал запусков с фильтрами, по клику получить лог, перезапустить/продолжить(в случае с задачами в которых много действий остановленных при ошибке в одном из и т.д. )Написать нужный UI для "виндового шедулера", вроде как, проще, чем писать всё с "нуля". Да и его родной UI, всяко, будет полезен. если почитаете топик, написать как раз нет проблем. интересовало именно наличие стандартного решения в пару строчек (черeз PLINQ или Parallel) или его отсутствие, вот и весь вопрос был. вопрос как написать самому, тут от меня не звучал, разве что просил продемонстрировать варинат на await, т.к. не понял из приведенного ответа как ограничить потоки. запуск заданий по времени лишь малая часть функционала, хотя разумеется важнейшая.не говоря про права на управление стандартным шедулером еще и на удаленном сервере для юзера. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:28 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas... не говоря про права на управление стандартным шедулером еще и на удаленном сервере для юзера.Ну сделать сервер приложений, управляющий "шедулером" на сервере. На первый взгляд тут напрашивается Web UI. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:33 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasawait, т.к. не понял из приведенного ответа как ограничить потоки. Я по задаче не понял, зачем ограничивать потоки. У меня задач 100 сразу. По умолчанию пул где то 10 - 15 стартует. Потом он сам выбирает задачи и ОПТИМИЗИРУЕТ. По моему впечатлению работает отлично. И в сети читал, что лезть туда и писать с нуля тоже не надо. Конкретно, про await можно рассуждать когда попробуешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:39 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
многие архитектурные решения вынужденные и со стороны человека не знающего внутренней кухни могут выглядеть кривыми и странными, а для человека в теме наоборот супер элегантным выходом из ситуации. закрытые порты, отсутствие всяких "пользовательских прав" в крупных компаних это норма, приходится через один порт пропихивать кучу потоков, наворачивая разные проксисислужбы и вебсервисы. открыть порт для дочерней компании с защитой решения не архсовете это на месяцы, окажется что внутренняя система вообще не имеет паспорта в глобальной корп среде и о каких портах для нее может идти речь, пусть даже они не выходят за пределы конкретной дочки, а бизнесу нужно решение уже сейчас ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:41 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasзакрытые порты, отсутствие всяких "пользовательских прав" в крупных компаних это норма, приходится через один порт пропихивать кучу потоков, наворачивая разные проксисислужбы и вебсервисы. открыть порт для дочерней компании с защитой решения не архсовете это на месяцы, окажется что внутренняя система вообще не имеет паспорта в глобальной корп среде и о каких портах для нее может идти речь, пусть даже они не выходят за пределы конкретной дочки, а бизнесу нужно решение уже сейчасНу сервер приложений, предложенный выше, решает эти проблемы. Ну дело Ваше, конечно же... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:43 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasесли почитаете топик, написать как раз нет проблем. интересовало именно наличие стандартного решения в пару строчек (черeз PLINQ или Parallel) или его отсутствие, вот и весь вопрос был.И решение было предложено практически сразу: 20902755 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:47 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Алексей К, Конечно, это будет по взрослому, без обид для автора. Пока, как я понял, он запустит демон или процесс на другой машинке и всё. Удачи аффтару. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:47 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Petro123Удачи аффтару. +1 :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:48 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Алексей Кbarrabas... не говоря про права на управление стандартным шедулером еще и на удаленном сервере для юзера.Ну сделать сервер приложений, управляющий "шедулером" на сервере. На первый взгляд тут напрашивается Web UI. все что умеет виндовый шедулер это просто запускать процесс (действие), он не понимает ответов от приложений не умеет работать с его логами не может объединять действия в задания с разными уровнями и паррарельностью, а запуск процесса самому это несколько строк кода всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 12:49 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabas... он не понимает ответов от приложенийОн понимает process exit code, этого достаточно. barrabas не умеет работать с его логами не может объединять действия в задания с разными уровнями и паррарельностью,Это не его задачи, он не для этого. barrabas а запуск процесса самому это несколько строк кода всего.Да. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 13:00 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasArm79Так, не дочитал до конца. Про Parallel.ForEach уже сказали )) Но я так и не понял, что это за такая бизнес-задача? сама обработка происходит удалённо, а не на машине где организуется очередь, нагрузка на удаленный сервер не связана с кол-вом процессоров на клиенте, вот и все Посему клиент должен управлять нагрузкой на СЕРВЕРЕ? А что, сервер сам не умеет планировать свои ресурсы? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 13:23 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Arm79barrabasпропущено... сама обработка происходит удалённо, а не на машине где организуется очередь, нагрузка на удаленный сервер не связана с кол-вом процессоров на клиенте, вот и все Посему клиент должен управлять нагрузкой на СЕРВЕРЕ? А что, сервер сам не умеет планировать свои ресурсы? нет, как раз не должен, поэтому он должен только получить сколько потоков он имеет право создать запуская группу действий и действовать в рамках этих условий. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 13:32 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
Алексей Кbarrabas... он не понимает ответов от приложенийОн понимает process exit code, этого достаточно. barrabas не умеет работать с его логами не может объединять действия в задания с разными уровнями и паррарельностью,Это не его задачи, он не для этого. barrabas а запуск процесса самому это несколько строк кода всего.Да. :-) ну вот и не подошел он по списку того, что требовалось и считалось задачей шедулера в конкретной компании. что тут рассуждать, программа написана более 10 лет назад, и последние года 3 не менялась вообще, а глобально так еще дольше. люди которые ее писали уже не работают, а прога живет. у меня есть своё мнение чего там не хватает и как можно было бы лучше сделать и удобнее, но нет времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 13:41 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasArm79пропущено... Посему клиент должен управлять нагрузкой на СЕРВЕРЕ? А что, сервер сам не умеет планировать свои ресурсы? нет, как раз не должен, поэтому он должен только получить сколько потоков он имеет право создать запуская группу действий и действовать в рамках этих условий. Получилось на выходе, что вы пишите свой пул потоков. У которого MaxThread, MinThread, время простоя и т.д. Поэтому у вас АппСервера нет. Т.к. там админ просто имеет это как параметр. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 13:43 |
|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#18+
barrabasrefregпропущено... Нет гарантии, что будет в нужном порядке. Метод AsOrdered в PLINQ не нельзя задать ЛЮБОЕ число потоков, они зависят от кол-ва процессоров на клиентеWithDegreeOfParallelism barrabasТочно нет гарантии с ConcurrentQueue?Причем тут это, если Parallel.Foreach использует IEnumerable? Правда, есть еще перегрузка: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2017, 14:30 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1399646]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
93ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 506ms |
0 / 0 |