powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос про async и task
21 сообщений из 46, страница 2 из 2
Вопрос про async и task
    #39880635
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachhVosttи дросселирование...

это что такое?
какие-то смутные ассоциации с дросселями из электротехники...

-- вы сказали дойкие?
-- я сказал бойкие!
-- может всё-таки дойкие?

:)
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880647
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Вариант с Parallel.ForEach мне встречался несколько раз, с комментами в духе "делай так и не парься"
А второй вариант по сравнению с этим что даст?

Мне бы в идеале раскочегарить это дело до полного забития пропускной способности моего инета. А если это будет просто экономия каких то мифических ресурсов - то для чего собственно? чтоб в игрушку поиграть пока все это дело 10 лет качается? :)
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880651
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

ну делай так и не парься.

тут как бы два направления:

1. решаешь проблему экономии ресурсов
2. хочешь прокачаться в глубоком понимании

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

Да как бы и первое и второе, но не сами по себе а для достижения третьего:

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

А так как хз в каких задачах он будет использоваться в будущем, то и понять и "вылизать" его хочется получше.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880660
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlт.к. задача массового выкачивания периодически встречается, хотелось бы найти некий оптимальный и универсальный код
Этого кода нет, т.к. этим ты создаешь проблемы тем у кого выкачиваешь. Проблемы от перегруза сайта до кражи информации.
По-хорошему если надо много инфы с сайта получить, то надо связаться с владельцем сайта и узнать как.
Анонимно можешь получить неприятный ответ. В лучшем случае перестанут пускать на сайт.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880665
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Так для того и нужна небольшая подстройка... Думаю гуглу абсолютно пофиг на мои 100 мегабит, а если какой мелкий форум скачать захочется, можно и прикрутить. (хотя разве сейчас остались сайты которые хотя бы заметят эти мои 100 мегабит?)
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880667
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlDima T,

Так для того и нужна небольшая подстройка... Думаю гуглу абсолютно пофиг на мои 100 мегабит, а если какой мелкий форум скачать захочется, можно и прикрутить. (хотя разве сейчас остались сайты которые хотя бы заметят эти мои 100 мегабит?)
Наивный. Про гугл я не понял, думаю они даже помогут если цель гуманная. А всякие справочники и инет-магазины стоят перед дилеммой как показать инфу в интернет и сделать так чтобы инфу не украли. Т.е. потенциальному покупателю надо показать все, а конкуренту - ничего.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880715
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

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

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

ЗЫ. ну коль в тему влез, напиши чтонить дельное, кроме оффтопика.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880720
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТ.е. потенциальному покупателю надо показать все, а конкуренту - ничего.
Не понимаю, как это можно сделать, кроме как поместить на страницу чекбокс "Сим зуб даю, что я покупатель, а не конкурент". И какой в этом смысл? Конкурент узнает информацию, которая и так для всех открыта?
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880744
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatDima TТ.е. потенциальному покупателю надо показать все, а конкуренту - ничего.
Не понимаю, как это можно сделать, кроме как поместить на страницу чекбокс "Сим зуб даю, что я покупатель, а не конкурент".
Простейший способ: подсчет количества запросов с конкретного IP в единицу времени. Человек через браузер не создаст тысячи запросов за минуту.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881103
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlЯ запускаю 100500 тасков и радуюсь жизни.
Если создавать таски так:

Код: c#
1.
2.
Task.Run(...request.GetResponse()...);
Task.Factory.StartNew(...request.GetResponse()...)


то при этом запускаются обычные потоки операционной системы (Thread). Процессор будет вхолостую переключать контексты между ними. Плохо.


Я так понимаю, request.GetResponseAsync() возвращает IO-bound Task? Тогда не нужно вручную создавать таски. Просто вызывай этот метод столько раз, сколько нужно. Если нужно дождаться выполнения тасков, запоминай их. Как-то так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var tasks = new List<Task<object>>(); // вместо object нужный тип

for (int i = 0; i < 100500; i++)
{
    var task = request.GetResponseAsync();
    tasks.Add(task);
}

await Task.WhenAll(tasks); // или Task.WaitAll


Этот код полностью асинхронный (если, конечно, метод GetResponseAsync сам по себе асинхронный), здесь не создаётся ни одного CPU-bound потока. То есть процессор совершенно не загружен, а вот сеть (IO-подсистема) должна быть загружена полностью.


iskatelsqlНо что будет если в тасках я буду использовать ... request.GetResponseAsync() ?

Даст это какойто проит? Например освободит на время сетевых ожиданий поток из пула для запуска другого таска, или все это ерунда, и этот асинк сам займет еще поток пула для себя?
Асинковый таск уйдёт в IOCP и не будет грузить процессор. Но вручную созданный таск (поток) будет требовать к себе внимание процессора. Однако, современная Винда умеет детектировать, когда поток простаивает в ожидании IO-операции и может отдавать этот поток для других целей. Так что реальных потоков наверняка будет использоваться существенно меньше. То есть это хоть и менее эффективно, чем полностью асинхронный вариант, но лучше, чем самый первый.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881288
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikНо вручную созданный таск (поток) будет требовать к себе внимание процессора.
Ну, вообще-то, спящий на i/o поток тоже не будет грузить процессор, пока i/o не завершится. Просто, в отличие от асинка этот поток уже не сможет быть использован для чего-то другого.

petalvikОднако, современная Винда умеет детектировать, когда поток простаивает в ожидании IO-операции и может отдавать этот поток для других целей.
Единственное как она это умеет - это как раз и есть асинхронный i/o с использованием completion port.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881800
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Я вижу ты разбираешься, подскажи (немного оффтопика)

Мне никогда не удавалось на шарпе нагрузить процессор/сеть/диск на 100%
Ну то-есть в искусственных задачах ношения воды решетом получалось, но ни в одной практической не выходило. Плюсы бы сразу сожрали все что им дают. Может где волшебную переменную подправить, мол кушай, не подавись?
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881807
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

Даже и не знаю. А для чего?
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881808
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlfkthat,

Я вижу ты разбираешься, подскажи (немного оффтопика)

Мне никогда не удавалось на шарпе нагрузить процессор/сеть/диск на 100%
Ну то-есть в искусственных задачах ношения воды решетом получалось, но ни в одной практической не выходило. Плюсы бы сразу сожрали все что им дают. Может где волшебную переменную подправить, мол кушай, не подавись?
Почитай и может поймешь что чудес не бывает.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881812
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql Может где волшебную переменную подправить, мол кушай, не подавись?
Давно бы подправили и пользовались, но нет ее. С++ чуть быстрее C#. Быстрее на проценты, но не на порядки. На порядки может ускорить только смена алгоритма, например вместо перебора бинарный поиск.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881828
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlfkthat,

Я вижу ты разбираешься, подскажи (немного оффтопика)

Мне никогда не удавалось на шарпе нагрузить процессор/сеть/диск на 100%
Ну то-есть в искусственных задачах ношения воды решетом получалось, но ни в одной практической не выходило. Плюсы бы сразу сожрали все что им дают. Может где волшебную переменную подправить, мол кушай, не подавись?
любая нормальная задача грузит всю эту фигню по уши
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39881881
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T Почитай и может поймешь что чудес не бывает.
таких законописателей расстрелять надо, офигели уже козлы.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39882126
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatДаже и не знаю. А для чего?

Да я в пятницу писал, не обращай внимания :)

А так - большинство моих задач - это быстро что-то посчитать и выдать результат. Но без извращений с параллелями ни проц не грузит, ни диск, ничего. Как будто на марсе живет. В сях например пустой цикл отожрал бы весь процессор, но тут даже это не прокатывает. Непонятно чем вообще вся эта CLR занимается, всегда тупо чего-то ждет? Почему нужно как-то распараллеливать задачу, которая сама из себя процессороемкая, и на сях дала бы знать о себе воем кулеров, а на шарпе без пинка не заставить?

ЗЫЫ. Я щас как и в пятницу себя чувствую, так что можно не обращать внимания :)
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39882132
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

а скоко у тебя там ядер то?
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39882147
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

Код: 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.
private const int _coreCount = 4;

private static void Main(string[] args)
{
    var process = Process.GetCurrentProcess();
    process.PriorityClass = ProcessPriorityClass.RealTime;
    process.ProcessorAffinity = (IntPtr)0x0f;

    var threads = Enumerable.Repeat(0, _coreCount)
        .Select(_ => new {
            Thread = new Thread(UselessLoop),
            Event = new ManualResetEvent(false)
        }).ToList();

    threads.ForEach(t => {
        t.Thread.Priority = ThreadPriority.Highest;
        t.Thread.Start(t.Event);
    });

    WaitHandle.WaitAll(
        threads.Select(t => t.Event).ToArray());
}

private static void UselessLoop(object arg)
{
    var @event = (EventWaitHandle)arg;
    var startDateTime = DateTime.Now;

    while (DateTime.Now - startDateTime < TimeSpan.FromSeconds(15))
    {
        continue;
    }

    @event.Set();
}




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


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