|
Очередь потоков
|
|||
---|---|---|---|
#18+
Есть задача, считывать данные из бд и запускать в отдельных потоках метод, который будет обрабатывать данные и записывать их в БД. Никакого ГУИ, это служба windows. Кол-во потоков ограничено параметром из конфига. Подскажите, пожалуйста, простое и удобное решение, дабы не изобретать велосипед. Что лучше подойдет для решения задачи: таски или потоки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 12:16 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
ИМХО с потоками проще. При старте создал сколько надо, а дальше каждый в цикле: прочитал, посчитал, записал. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 12:42 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Супер_Пав, можно завернуть все это дело в блоки TPL Dataflow ... будет аккуратненько... вся инфраструктура для этого там есть... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 13:05 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
buserСупер_Пав, можно завернуть все это дело в блоки TPL Dataflow ... будет аккуратненько... вся инфраструктура для этого там есть... сейчас посмотрю, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 13:11 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Супер_Пав, Если нет гуи которое тормозит, то потоки не нужны....в общем случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 13:49 |
|
Очередь потоков
|
|||
---|---|---|---|
#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.
Код: 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.
Критика адекватная приветствуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 14:31 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
https://msdn.microsoft.com/ru-ru/library/ee789351(v=vs.100).aspx можно тупо взять пример, инициализировать с параметром 1 и тогда все таски в этом шадулере будут выполняться последовательно, а не паралельно. И не надо изобретать велосипед ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 15:58 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Супер_Пав, Есть специальные многопоточные коллекции, чтобы не педалить через lock. Я бы лучше использовал Quartz. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 16:58 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Roman Mejtes https://msdn.microsoft.com/ru-ru/library/ee789351(v=vs.100).aspx можно тупо взять пример, инициализировать с параметром 1 и тогда все таски в этом шадулере будут выполняться последовательно, а не паралельно. И не надо изобретать велосипед не скажу, что написал большой велосипед. У меня чтение данных из бд заложено по таймеру. Инициализация кол-ва потоков происходит 1 раз, дальше добавляю новые таски по мере чтения данных из БД ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 17:02 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Супер_Пав, дело ваше, вы просили критику, я вам предоставил альтернативный вариант, от MS, его можно сильно упростить, если не требуется параллелизация выполненения. Используйте свой, если вам он ближе. Смысл в том, что создавая таски, они так и так у вас выполняются в рамках какого то шадулера, которым вы ни как не управляете. А представленном мною варианте, вы используйте свой шедулер, можно сделать его статичным и использовать всего, когда нужно закинуть в очередь выполнения новый таск и все они будут ожидать выполнение предыдущих. Я вас не агетирую использовать, просто показал альтернативу, более кононичную , не зря же придумали планировщики :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 17:34 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Roman MejtesСупер_Пав, дело ваше, вы просили критику, я вам предоставил альтернативный вариант, от MS, его можно сильно упростить, если не требуется параллелизация выполненения. Используйте свой, если вам он ближе. Смысл в том, что создавая таски, они так и так у вас выполняются в рамках какого то шадулера, которым вы ни как не управляете. А представленном мною варианте, вы используйте свой шедулер, можно сделать его статичным и использовать всего, когда нужно закинуть в очередь выполнения новый таск и все они будут ожидать выполнение предыдущих. Я вас не агетирую использовать, просто показал альтернативу, более кононичную , не зря же придумали планировщики :) Нене, спасибо за ответ. Я обязательно посмотрю и изучу материал=) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 18:02 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Petro123Супер_Пав, Если нет гуи которое тормозит, то потоки не нужны....в общем случае. +1 Скуль-сервер сам разрулит запросы лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 22:02 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Cat2, и добавлю, что фоновый ПРОЦЕСС быстрее чем поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2017, 22:46 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Супер_Павсчитывать данные из бд и запускать в отдельных потоках метод, который будет обрабатывать данные и записывать их в БД Делать последовательно. Или у вас временные затраты на расчеты этих данных сопоставимы по скорости чтения/записи в БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 17:02 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
Cat2Petro123Супер_Пав, Если нет гуи которое тормозит, то потоки не нужны....в общем случае. +1 Скуль-сервер сам разрулит запросы лучше ересь несете оба ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 21:10 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
а для задачи ТС есть готовые вещи, типа - https://msdn.microsoft.com/ru-ru/library/ee362541(v=sql.111).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2017, 21:14 |
|
Очередь потоков
|
|||
---|---|---|---|
#18+
ViPRosа для задачи ТС есть готовые вещи, типа - https://msdn.microsoft.com/ru-ru/library/ee362541(v=sql.111).aspx Это не то. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2017, 10:35 |
|
|
start [/forum/topic.php?fid=20&fpage=40&tid=1399752]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 142ms |
0 / 0 |