|
Парралельный обход коллекции в строгом порядке с заданным числом потоков
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=20&msg=39542640&tid=1399646]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
119ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 218ms |
0 / 0 |