|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
Что-то не понимаю я этот ThreadPool. Короче задача очень простая: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Так вот разница между временем 1 и временем2 занимает до 10 секунд! Думал - ладно, наверное потоки заняты все. Задал 500 рабочих. После постановки смотрю - занято около 20, 480 свободно. И при этом код ждет ! Где подвох? В методе Sleep? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 17:14 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
ну что, какие варианты? интересно же. Sleep убрал конечно, но вопрос выделения потоков интересен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 15:06 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, можете привести тестовый код, как время замеряете? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 15:25 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanГде подвох? ну фокус может и просто открывается. при вызове метода время может тратится на трансляцию этого метода в байткод. тема такая проскакивала у меня 13491696 что если вызвать метод напрямую, а потом в трит забросить и так замерить. ну или через тот же ngen прогнать ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 15:32 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, насколько я понимаю ThreadPool не сразу запускает переданный делегат т.к. его предназанчение выполнять фоновые задачи. То есть задачи с сравнительно низким приоритетом. Если нужно чтобы это сразу запускалось создавай поток вручную. beg-in-erпри вызове метода время может тратится на трансляцию этого метода в байтко JIT-компиляция конечно замедляет исполнение, но не на 10 секунд же. Пример из твоего вопроса является крайним случаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 15:57 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
LR, время смотрю по записи в лог. используется log4net в данном случае. Не понимаю одного - пулу ясно сказано - вот тебе 500 рабочих потоков, а он тормозит. Явно создавать свой "пул" можно конечно, но вроде как не рекомендуется такой подход :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 16:15 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, ну а если выполнить в цикле, несколько раз, проверить версию beg-in-er и bazile, будет каждый раз по 10 секунд или только первый раз? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 16:31 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanЯвно создавать свой "пул" можно конечно, но вроде как не рекомендуется такой подход :) Писать свой пул потоков безусловно не нужно, но никто нам не запрещает использовать потоки напрямую, без пула. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 16:32 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
bazile, ну пул потоков я имел ввиду свой массив потоков и в нем уже добавлять/ брать из него потоки. Вообщем в раздумьях. Попробую через Task<>, хотя думаю тоже самое будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:01 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, думаю чудеса не с Threadpool, а с этим - "время смотрю по записи в лог. используется log4net в данном случае" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:10 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
LR, хм, не вижу повода не доверять ему в данном случае. Более того, по скорости записи дат обработки в базу это время подтверждается. Можно попробовать даже Datetime кидать в метод для большей уверенности. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:13 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanну пул потоков я имел ввиду свой массив потоков и в нем уже добавлять/ брать из него потоки. А я имел в виду создание нового объекта Thread каждый раз когда нужно выполнить фоновую задачу. Изначальный вопрос про задержку с выполнением ты задавал из любопытства или у тебя есть конкретная задача? Если да, то какая? Потому что в одном случае наличие задержки важно, в других нет. Все зависит от конкретной ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:17 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanразница между временем 1 и временем2 занимает до 10 секунд! Только что набросал простейший код с ThreadPool. Задержки исполнения вообще не видно. Так что тут другие факторы работают. Возможно log4net долго поднимается (исполняется), возможно комп сильно нагружен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:30 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, блин, ну вот скоко это выдаст? у меня - 0 мс Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:36 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
bazile, вообще изначально я поставил под сомнение Thread.Sleep. На одном форуме нашел мысль,мол не применяйте Sleep в ThreadPool. Но никаких подробностей. После того как заменил код Sleep на обычный Web вызов таких задержек пока не обнаружил. Но меня в любом случае интересует каким образом пул выделяет потоки? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:38 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
блин))) Код: c# 1. 2. 3. 4.
у меня 1 мс ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:39 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
LR, а если так: ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:40 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, да, stopwatch.Start надо (см.выше), так скоко? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:41 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
LR, что, сколько? запустите в цикле :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:46 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivan, сколько времени )) чудо проявилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:48 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
LR, время ща 17-50 по москве где-то :) С веб запросом чудес с пулом пока не наблюдалось. Но подробнее обязательно исследую. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 17:49 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanвремя смотрю по записи в лог. используется log4net в данном случае. log4net, сам ведёт свои записи используя тредрул, так что время им считать - это совсем ниочём ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 19:56 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanвообще изначально я поставил под сомнение Thread.Sleep. На одном форуме нашел мысль,мол не применяйте Sleep в ThreadPool. "Спящий" поток продолжает получать внимание со стороны планировщика ОС, поэтому он как бы и не "спит". Если нужно организовать паузу, то лучше создать waitHandle и ждать на нем. Кроме того в правильно написанном коде не должно быть необходимости в использовании пауз. Следует использовать нормальные механизмы синхронизации. netivanПосле того как заменил код Sleep на обычный Web вызов таких задержек пока не обнаружил. Надеюсь ты вызывал Sleep только в целях проверки ThreadPool, а не как постоянное решение. netivanНо меня в любом случае интересует каким образом пул выделяет потоки? Это детали реализации которые тебя не должны волновать. Главное что пул выполнит переданный ему делегат в background потоке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 11:33 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
bazile, да, конечно как временное решение. Волновать не должно, но интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 11:35 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanЧто-то не понимаю я этот ThreadPool. Короче задача очень простая: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Так вот разница между временем 1 и временем2 занимает до 10 секунд! Думал - ладно, наверное потоки заняты все. Задал 500 рабочих. После постановки смотрю - занято около 20, 480 свободно. И при этом код ждет ! Где подвох? В методе Sleep? Ты бы еще 4800 потоков сделал, тогды бы еще больше задержки были. Создание трэда - целое кино и значительные накладные расходы. Подход в лоб, который тебн рекомендовали ничего не даст кроме тормозов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2012, 20:01 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVaСоздание трэда - целое кино и значительные накладные расходы.+ 1 МБ памяти под стек. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 05:56 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVa, читай внимательно вопрос. Количество потоков значения не имеет. Кстати, выхода МСУ что-то не видно :( ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 11:02 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanГде подвох?Скорее не подвох, а вопрос: "Чем занят пул?" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 11:20 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
Алексей КnetivanГде подвох?Скорее не подвох, а вопрос: "Чем занят пул?" На то он и пул, чтобы не плодить трэды на каждый чих как тут рекомендовали. Default value у него - 25 штук на процессор. ЗЫ ThredPool - прошлый век. Есть таски, а в 4.5 асинхронность ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 11:52 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVaЗЫ ThredPool - прошлый век. Есть таски, а в 4.5 асинхронность а не одно ли и тоже всё это? есть Thread , а таски , асинхронность, пул это его обвесы? разве не? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 12:06 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
beg-in-erSeVaЗЫ ThredPool - прошлый век. Есть таски, а в 4.5 асинхронность а не одно ли и тоже всё это? есть Thread , а таски , асинхронность, пул это его обвесы? разве не?Нет. Тридпул позволяет экономить на количестве потоков. Таски и т. п. позволяют удобнее пользоваться тридпулом в том числе. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 12:08 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
Алексей К, все равно все это приходит к пулу. как это не назови. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 12:28 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
netivanАлексей К, все равно все это приходит к пулу. как это не назови.Через таски с пулом работать удобнее + есть различные оптимизации вроде дочерних тасков. Но и не все таски выполняются через пул. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 12:32 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
beg-in-erSeVaЗЫ ThredPool - прошлый век. Есть таски, а в 4.5 асинхронность а не одно ли и тоже всё это? есть Thread , а таски , асинхронность, пул это его обвесы? разве не? Таски оптимизируют загруженность трэдов, а не тупо ставят их в очередь. async\await - совсем другое кино, которое обеспечивает асинхронность без мультипоточности ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 15:25 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVa, Вот Вечно Вы Сева посоветуете так посоветуете, нет я не в том плане что совет не верный и не в тему, а в том что основная масса читающих это веб-прграммисты, и естественно нужно исходить их этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 16:25 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
Где-то в степиSeVa, Вот Вечно Вы Сева посоветуете так посоветуете, нет я не в том плане что совет не верный и не в тему, а в том что основная масса читающих это веб-прграммисты, и естественно нужно исходить их этого. Это на клиенте можно особо не задумываться о кол-ве трэдов, а для web совсем другая история. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 16:35 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVaГде-то в степиSeVa, Вот Вечно Вы Сева посоветуете так посоветуете, нет я не в том плане что совет не верный и не в тему, а в том что основная масса читающих это веб-прграммисты, и естественно нужно исходить их этого. Это на клиенте можно особо не задумываться о кол-ве трэдов, а для web совсем другая история. я не это имел ввиду, а сам термин вебпрограммсит, это программист который может программировать при наличии интернета. отбери у него интернет, аки форум где можно скопипастить, и он простой юзер без профессии. тут не должны упоминаться технологии не из контекста вопроса, ибо вп,не читает в общем, и не напрягает мысль, ответ желателен что бы ложился под мышку, нецензурная брань является катализатором для понимания, а термины поток и тому подобное желательно заменять примерами их жизни для адаптивного усвоения.. зы никого не хотел обидеть..бб ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 16:46 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
Где-то в степиSeVaпропущено... Это на клиенте можно особо не задумываться о кол-ве трэдов, а для web совсем другая история. я не это имел ввиду, а сам термин вебпрограммсит, это программист который может программировать при наличии интернета. отбери у него интернет, аки форум где можно скопипастить, и он простой юзер без профессии. тут не должны упоминаться технологии не из контекста вопроса, ибо вп,не читает в общем, и не напрягает мысль, ответ желателен что бы ложился под мышку, нецензурная брань является катализатором для понимания, а термины поток и тому подобное желательно заменять примерами их жизни для адаптивного усвоения.. зы никого не хотел обидеть..бб Таким юзерам про threadpool вредно знать ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 16:55 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVa, Я всегда ловлю себя на мысли, а что бы было без интернета, и без форумов, конечно технологии не получили бы такого бурного развития,нео профессия программист была бы. Вот вспомнить 88 год, про интернет никто не слышал, сеть мпс ведь работала, и развивалась. и были уникальные разработки, со стеллажами сопутствующей литературы. Там были тоже форумы но в живую, можно было бы намылить морду, что иногда и делали.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 17:03 |
|
чудеса с Threadpool
|
|||
---|---|---|---|
#18+
SeVa, никкто не спорит, что "Оптимизируют" и тд. Вообщем топик можно прикрывать. Вывод - не используйте Sleep в пуле.:) зы я не веб программист. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2012, 17:45 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1405524]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 172ms |
0 / 0 |