Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему Task - и так странно запускаются. / 25 сообщений из 38, страница 1 из 2
18.04.2019, 04:42
    #39803109
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Столкнулся со странным поведением программы. Накидал вот тест:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        private void button1_Click(object sender, EventArgs e)
        {
            int cnt = 0;
            for (int i = 0; i < 100; i++)
            {
                Task t = new Task(check);
                t.Start();
                Text = $"{cnt++}";
            }
        }

        private void check()
        {
            File.WriteAllText($@"c:\task\{Path.GetRandomFileName()}", "1");
            Thread.Sleep(1000);
        }



Цикл отрабатывает мгновенно, что видно по числу в заголовке окна, а вот файлики в папке создаются неохотно, если поставить задержку 1000 то где-то 10 в секунду, если 50000 то примерно один в секунду.

Что мешает всем таскам выполниться сразу?
...
Рейтинг: 0 / 0
18.04.2019, 07:20
    #39803123
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlЧто мешаетsleep, размер пула, накладные расходы на параллельность
...
Рейтинг: 0 / 0
18.04.2019, 09:00
    #39803145
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlЦикл отрабатывает мгновенноа почему должно быть иначе, он же не ждет выполнения задач
...
Рейтинг: 0 / 0
18.04.2019, 09:43
    #39803162
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsql,

было бы странно, если бы не было так
...
Рейтинг: 0 / 0
18.04.2019, 13:05
    #39803295
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Я почему-то думал что таск это тоже что и поток, только в "улучшенном" виде. Для чего тогда эти таски?
...
Рейтинг: 0 / 0
18.04.2019, 13:20
    #39803314
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlЯ почему-то думал что таск это тоже что и поток, только в "улучшенном" виде. Для чего тогда эти таски?делаь потоки, только в улучшенном виде.
...
Рейтинг: 0 / 0
18.04.2019, 13:59
    #39803354
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Petro123делаь потоки, только в улучшенном виде.нет
таск не эквивалентен потоку
...
Рейтинг: 0 / 0
18.04.2019, 14:17
    #39803367
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlЯ почему-то думал что таск это тоже что и поток, только в "улучшенном" виде. Для чего тогда эти таски?
Если 100 потоков одновременно будут что-то делать нагружая проц, то на каждый логический проц будет 10+ потоков и все будет тормозить из-за постоянного переключения контекста потоков. Т.е. существенная часть работы проца будет связана с диспетчеризацией потоков.

Более эффективная стратегия использовать столько потоков, сколько лог.процов. В реале можно чуть больше, т.к. поток может приостановиться ожидая ответа диска/сети и т.п.

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

Если не путаю, количество потоков исполняющих такси как-то настраивается, погугли.
...
Рейтинг: 0 / 0
18.04.2019, 14:31
    #39803378
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Dima T,

Сдается мне, тут что-то еще... Вот в приведенном примере, когда я ставлю задержку 50 сек. почему стартует не какое-то количество, а по одному в секунду? Ведь никакой нагрузки то нет, sleep всего-лишь.
...
Рейтинг: 0 / 0
18.04.2019, 14:32
    #39803379
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Shocker.Pro,
- Откуда дети берутся?
- Аист приносит.
Ты: - нет, их не аист приносит))))
...
Рейтинг: 0 / 0
18.04.2019, 14:34
    #39803383
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlСдается мне, тут что-то еще..да. Возьми книжку с примером, и выполни пример.
Там много чего есть, чем бездумно тормозить поток.
Даже есть рекомендация от MS таким деятелям, которые поток тормозят.
...
Рейтинг: 0 / 0
18.04.2019, 14:40
    #39803393
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlВедь никакой нагрузки то нет, sleep всего-лишь.
Управляя тасками извне непонятно sleep() у тебя выполняется или майнинг идет со 100% нагрузкой на проц. Правило построено на среднестатистических наблюдениях.
...
Рейтинг: 0 / 0
18.04.2019, 14:43
    #39803396
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Dima T,

Понятно. Переделал программу на потоки - все заработало как надо.

Хех, а в каком то описании читал, мол потоки вчерашний день, а таски крестиком вышивать умеют и пиво приносят. А они вон оно как - пока не пнешь не полетит. Не для меня они вобщем...
...
Рейтинг: 0 / 0
18.04.2019, 14:52
    #39803409
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlПонятно. Переделал программу на потоки - все заработало как надо.Можно было просто запускать Task с LongRunning опцией, тогда потоки брались бы не из пула.

Но что так, что с тредами - подход плохой - ты создаешь потоки, которые ничего не делают, зато жрут ресурсы как не в себя.
Лучше использовать асинхронный ввод-вывод на стримах.
...
Рейтинг: 0 / 0
18.04.2019, 14:53
    #39803410
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlХех, а в каком то описании читал, мол потоки вчерашний день, а таски крестиком вышивать умеют и пиво приносят.так и есть, ты просто не удосужился изучить вопрос
...
Рейтинг: 0 / 0
18.04.2019, 14:53
    #39803412
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Petro123Shocker.Pro,
- Откуда дети берутся?
- Аист приносит.
Ты: - нет, их не аист приносит))))пора взрослеть
...
Рейтинг: 0 / 0
18.04.2019, 15:09
    #39803428
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Shocker.Proкоторые ничего не делают, зато жрут ресурсы как не в себя.

Я так понимаю, ты за локальные ресурсы переживаешь... У меня же потоки лезут "в эти ваши интернеты" и в основном ждут ответа в следующей серии... Просто я, поверив рекламе, решил что таски лучше будут. а какой мне с них смысл, если на потоках программа отрабатывает уже тогда, когда таски только начинают "раскачиваться"
...
Рейтинг: 0 / 0
18.04.2019, 15:17
    #39803432
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlПросто я, поверив рекламе, решил что таски лучше будут. а какой мне с них смысл, если на потоках программа отрабатывает уже тогда, когда таски только начинают "раскачиваться"Если ты не умеешь пользоваться инструментом, это не значит, что он плохой.

Тогда непонятно, зачем ты спрашиваешь совета.


iskatelsqlУ меня же потоки лезут "в эти ваши интернеты" и в основном ждут ответа в следующей серии... Еще хуже, если ты это сделаешь с помощью потоков, а не с помощью асинхронного программирования.

Совет - забудь слово Thread и изучай тему. Не хочешь - пили как хочешь, но не спрашивай, как правильно
...
Рейтинг: 0 / 0
18.04.2019, 15:22
    #39803437
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Shocker.ProСовет - забудь слово Thread и изучай тему.

И с какого бока ее начать изучать? Вот код у меня как в примере. только вместо sleep обращение к серверу, с его таймаутами. И тупила программа так же как в примере.

Ну задал я тут вопрос, получил первых три очень многозначительных ответа, понял что полез не туда и протоки наше все. Теперь ты говоришь что вроде как изначальный подход верный был. Но он же не работал как надо...

Ничего не понимаю (с)
...
Рейтинг: 0 / 0
18.04.2019, 15:40
    #39803446
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlИ с какого бока ее начать изучать?с теории. Есть книжки такие, учебниками называются.


iskatelsqlВот код у меня как в примере. только вместо sleep обращение к серверу, с его таймаутамиОбращение может быть разное и я подозреваю, что обращаешься ты к синхронным методам вместо асинхронных. Ты же не приводишь свой реальный код, но требуешь ответов.

iskatelsqlНо он же не работал как надо...еще раз. Не он не работал как надо, а ты не понял, как правильно им пользоваться
...
Рейтинг: 0 / 0
18.04.2019, 15:48
    #39803454
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Shocker.Proчто обращаешься ты к синхронным методам вместо асинхронных
Ну да, так я с помощью таска и хотел сделать синхронный метод асинхронным, чтоб одновременно выполнялись.

А в коде - просто вызов ф-ции из внешней сишной длл, и она либо сразу возвращается либо по таймауту секунд через пять. Можно вполне считать что там sleep(random(от 1 до 5000))
...
Рейтинг: 0 / 0
18.04.2019, 15:55
    #39803463
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlА в коде - просто вызов ф-ции из внешней сишной длл, и она либо сразу возвращается либо по таймауту секунд через пять. Можно вполне считать что там sleep(random(от 1 до 5000))iskatelsqlУ меня же потоки лезут "в эти ваши интернеты"то одно, то другое, то третье...
...
Рейтинг: 0 / 0
18.04.2019, 16:02
    #39803471
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Shocker.Proто одно, то другое, то третье...
А что не так? ф-ция то та в интернеты лезет...
...
Рейтинг: 0 / 0
18.04.2019, 16:04
    #39803474
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
iskatelsqlА что не так? ф-ция то та в интернеты лезет...iskatelsqlи она либо сразу возвращается либо по таймауту секунд через пятьа где она тут лезет. Если СРАЗУ возвращает, значит длительная операция не начиналась. Если таймаут - значит ошибка. А где тут собственно полезная работа-то?
...
Рейтинг: 0 / 0
18.04.2019, 16:25
    #39803498
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему Task - и так странно запускаются.
Shocker.ProА где тут собственно полезная работа-то?

А что ты имеешь ввиду под полезной работой?

Ну приконектилась она, скачала пару байтиков и вышла или подождала таймаута и вышла. Ну будь это не внешняя длл, а сокет какой нить, что бы изменилось?

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


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