powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как управлять тасками или потоками?
25 сообщений из 51, страница 1 из 3
Как управлять тасками или потоками?
    #40061397
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть некоторая длл, в ней функция (если важно - писаная на С++). Функция либо возвращает результат, либо висит по таймауту.
В одном из обсуждений я выяснил, что т.к. таскам совсем не известно что внутри ф-ции творится, они не могут это оптимизировать, а честно ждут когда выйдет таймаут.

Но такое положение вещей меня совсем не устраивает. Если (условно) результат/таймаут 50/50 и таймаут в 10 секунд, то на выборке в миллион получается около трех часов бессмысленного ожидания.

Но по опыту я знаю, что если ф-ция не вернула результат в первую секунду, то маловероятно что вообще вернет (хотя может, так что "срубать" таймаут нельзя). Хотелось бы по этому критерию плодить потоки дальше. Есть ли у тасков какой-то такой механизм управления. Или может на голых потоках что-то такое придумали?

PS. про ThreadPool.SetMinThreads я знаю, вот только не представляю как замерить время выполнения таска, "зависшего" в ожидании возврата функции.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061410
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061421
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

на картинке сам МСУ?
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061423
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
Есть некоторая длл, в ней функция (если важно - писаная на С++). Функция либо возвращает результат, либо висит по таймауту.
В одном из обсуждений я выяснил, что т.к. таскам совсем не известно что внутри ф-ции творится, они не могут это оптимизировать, а честно ждут когда выйдет таймаут.

Функцию можно запускать параллельно в нескольких потоках? Если можно, то так и делай. Зависла - пусть висит до завершения. Тупо сгенери свой миллион тасков, а они сами разберутся как выполняться.

iskatelsql
Или может на голых потоках что-то такое придумали?

На голых потоках можно извратиться, но скорее всего поимеешь утечку памяти. Вызываешь в потоке свою функцию и в другом ждешь секунду, по истечении если первый не закончил, то убиваешь его. Но, как уже сказал, если функция выделила себе память - она ее не освободит. Освобождение произойдет по завершению твоего процесса.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061427
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, кажется, понял, что за проблему пытается решить автор. Но, надо сказать, если эта ф-ия блокирует вызывающий поток, то все грустно и сделать тут ничего нельзя. Потому что если станешь плодить потоки руками, то у тебя система быстро встанет колом, а если пользоваться пулом потоков, то число параллельных вызовов будет всегда ограничено размерами пула сколько ты задач не создавай. Можно разве что поставить большую ферму серверов и распараллелить вызовы на них :))
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061428
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да имхо обыкновенная квота на поток, выдаешь временную квоту, если поток не справился с работой за эту квоту, (1 сек) поток
грохается и идем дальше.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061432
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи
да имхо обыкновенная квота на поток, выдаешь временную квоту, если поток не справился с работой за эту квоту, (1 сек) поток
грохается и идем дальше.

Только память некому освобождать. У него DLL на С++ написанная.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061436
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
вам поток надо освободить для следующего джоба, а функция сама сдохноет по таймауту, ну засрем память да бог с ней
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061440
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у CancellationToken'а есть свой Timeout
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061450
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CancellationTokenSource
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061493
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, ребят... Поезд не туда пошел. Грохать поток эт не проблема. Эт я и сам справлюсь. Вопрос в том что таймаут должен отработать, поток грохать нельзя. Но в 90% случаев он ничего делать не будет, так что нужно б и другие потоки в это время насоздавать.


fkthat
Я, кажется, понял, что за проблему пытается решить автор. Но, надо сказать, если эта ф-ия блокирует вызывающий поток, то все грустно и сделать тут ничего нельзя. Потому что если станешь плодить потоки руками, то у тебя система быстро встанет колом, а если пользоваться пулом потоков, то число параллельных вызовов будет всегда ограничено размерами пула сколько ты задач не создавай. Можно разве что поставить большую ферму серверов и распараллелить вызовы на них :))


Да, вот это все правильно!.

Но как-то грустно что сделать ничего нельзя... точнее даже не верится в это. В принципе, если бы была возможность измерить время работы таска, то можно руками увеличивать пул через секунду и уменьшать при выходе таска.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061497
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

TaskCompletionSource и пилите своё неблокирующее асинхронное ожидание.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061498
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
Но как-то грустно что сделать ничего нельзя... точнее даже не верится в это. В принципе, если бы была возможность измерить время работы таска, то можно руками увеличивать пул через секунду и уменьшать при выходе таска.


Причина грусти непонятно. Сделать можно что угодно, главное чтобы вы чётко понимали какую проблему решаете, есть ли вообще эта проблема, или просто себе чего-то надумали, или это реальная проблема, с которой вы столкнулись, или хотя бы она воспроизводится на синтетических тестах.

И, самое главное. Допустим вы как-то решили проблему. Вернее, думаете (и искренне в это верите), что решили.
Как вы убедитесь?

Начните с тестов.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061502
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Начните с тестов.


Спорное утверждение.

1. я могу тестировать только то до чего я догадываюсь, но спрашиваю я то, чего не знаю.
2. форум вроде как для обмена опытом, если кто-то провел подобное тестирование, то быстрее в космос полетим, если делиться результатами :)

hVostt
TaskCompletionSource и пилите своё неблокирующее асинхронное ожидание.

Звучит красиво, но будет оно именно так работать, или те же яйца, только в профиль, встанет ожидать и займет место в пуле?
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061503
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
Спорное утверждение.

1. я могу тестировать только то до чего я догадываюсь, но спрашиваю я то, чего не знаю.
2. форум вроде как для обмена опытом, если кто-то провел подобное тестирование, то быстрее в космос полетим, если делиться результатами :)


Ну так обмен опытом происходит на каких-то проверяемых ожиданиях и результатах.

Если это обмен фантазиями -- к опыту это не имеет никакого отношения.
Например, я вам скину модель бубна на алиэкспрессе, в который я стучу и у меня всё работает -- это похоже на ваши представления об обмене опытом? :)

iskatelsql
Звучит красиво, но будет оно именно так работать, или те же яйца, только в профиль, встанет ожидать и займет место в пуле?


Ну давайте расчехлим, вы свой хрустальный шар, я свой. И посмотрим в него.
У меня розовый пони, а у вас чего? :)
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061504
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
встанет ожидать и займет место в пуле


Как бы TCS может помочь в решении этой проблемы, опять же, если это проблема.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061506
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Если это обмен фантазиями -- к опыту это не имеет никакого отношения.


Так этого совершенно не требуется, я задаю вопрос по принципу "все придумано до нас" только я этого не знаю.
Я не прошу фантазировать или проводить за меня эксперименты - да так да, нет так нет.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061507
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Как бы TCS может помочь в решении этой проблемы, опять же, если это проблема.

Я так понимаю, что не поможет он ничем. Там хреновина которая просто лочит поток, что её вызвал. Байдезигн. Будь она кастомная, так, понятно, можно наворотить поверх неё и комплишены и канселейшены и хоть чорта лысого.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061511
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
Так этого совершенно не требуется, я задаю вопрос по принципу "все придумано до нас" только я этого не знаю.
Я не прошу фантазировать или проводить за меня эксперименты - да так да, нет так нет.


Да с этим никаких проблем :)
Но как вы проверите, что решения, которые вам накидают, работает и вообще что-то решает?
Как будете это делать? На голой вере?
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061519
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
На голой вере


На голой Вере я скорей с ней чем-то другим займусь. Интересная девиация - на голой бабе программировать...

Но всеж очередность должна быть - сначала советы, потом проверка...
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061520
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

Делюсь с вами опытом.
Начинайте с проверки.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061523
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
iskatelsql,

Делюсь с вами опытом.
Начинайте с проверки.

Ну опять телега вперед лошади - я ж сказал, не могу проверить того чего еще не знаю.
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061524
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,
давай Теее код, накидайТе консольку, надо говорить предметно, а не заниматься словоблудием, тащиТе сюда свой каменный цветок..
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061530
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
Ну опять телега вперед лошади - я ж сказал, не могу проверить того чего еще не знаю.


Ну чего же тогда делать предлагаете? :)
...
Рейтинг: 0 / 0
Как управлять тасками или потоками?
    #40061542
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ну чего же тогда делать предлагаете? :)

Закончить разговор, точнее поставить на паузу, пока кто-то не придет и скажет "да это все фигня, я вчера так делал, нужно лишь три раза в день..."
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как управлять тасками или потоками?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]