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

К примеру мне нужно скачать 100500 страниц из интернета. Я запускаю 100500 тасков и радуюсь жизни.

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

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

iskatelsqlНапример освободит на время сетевых ожиданий поток из пула для запуска другого таска, или все это ерунда, и этот асинк сам займет еще поток пула для себя?
Да, именно так примерно и будет. Поток, вызвавший операцию I/O не будет простаивать и ждать когда она завершится, а вернется в пул потоков, а когда операция I/O завершится, то из пула будет взят свободный поток и продолжит выполнение дальше по коду. Увеличивается паралельность кода. Рпаилизовано это с помошью системной штуки "I/O completion port" (виндовый аналог select/poll в юниксах).
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880161
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlВезде твердят что асинхронные операции это не многопоточность.

Вы хотели сказать: не равно, не тоже самое.

Т.е. вы что-то прочитали, упустили важную часть и теперь из-за этого возникло куча вопросов? :)
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880164
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880166
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatДа, именно так примерно и будет.
Ну ешкин кот, в вопросе или - или, ты отвечаешь "да". В блондинку перекрасился? :)

hVostt,

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

Вот объяснение с картинками:

https://codewala.net/2015/07/29/concurrency-vs-multi-threading-vs-asynchronous-programming-explained/

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

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

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

Я блондин Правда, уже потихоньку седеть начал по возрасту. Объясняю по-другому. Есть Task. Это такая штука, которая сразу, без блокировки и ожидания возвращается из метода и просто гарантирует, что когда-нибудь она завершится (успехом или факапом, или отменой по запросу). Под капотом у этой Task может быть все что угодно - это может быть параллельный поток, может быть асинхронная операция, может быть вообще ожидание какого-нибудь события (нажатия кнопки, истечения срока таймера и т.п.), а может даже вообще ничего и не быть (т.е. таск выполняется синхронно в том же потоке и возвращается уже сразу завершенным). В твоем примере речь идет об асинхронном вызове (асинхронный I/O), как это работает в этом случае (т.е. что там у таска под капотом) я выше пояснил.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880176
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВы хотите поговорить об этом? :)

Хочу. Если меня называют на вы, значит мы уже двинулись...

Еще вопрос про пул - я явно понял что мин нужно сразу поднимать (для интернетов), ибо он изначально у меня 8 и раскачивается постепенно. Только пока он раскачивается вся программа бы уже выполнилась... Вот как быть с макс? резать его стремно, хз что еще в этом пуле, но кол-во обращений к серверу хотелось бы ограничить. Странная умная штуковина Task, с которой хрен поймешь как быть, старый добрый Thread проще и понятнее. Но надо ведь учиться новому :(
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880177
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlстарый добрый Thread проще и понятнее.
Ага. Особенно когда натыкаешься на говнокод в веб-приложении, который отжирает весь пул, или, еще хуже, плодит 1000+ кастомных потоков через CreateThread.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880181
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

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

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

Остались люди, и много, которые считают обращение на "ты" фамильярностью.
Дикость, но что поделаешь, не готов ещё мир к этому :)

iskatelsqlЕще вопрос про пул - я явно понял что мин нужно сразу поднимать (для интернетов), ибо он изначально у меня 8 и раскачивается постепенно. Только пока он раскачивается вся программа бы уже выполнилась... Вот как быть с макс? резать его стремно, хз что еще в этом пуле, но кол-во обращений к серверу хотелось бы ограничить. Странная умная штуковина Task, с которой хрен поймешь как быть, старый добрый Thread проще и понятнее. Но надо ведь учиться новому :(

Если хочется единственного ультимативного решения, его нет.
Давайте исходить из конкретных задач, а не переворачиванием сферического коня в вакууме.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880189
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlfkthat,

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

Пока что нашел для себя что если пул с минимума сразу поднять, то таски вроде работают... Хотя в чем их прелесть так и не понял.

Что может быть проще:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
static void Main() 
{
    Parallel.For(0, 100, _ => DoSomethingLongRunning());
}

static void DoSomethingLongRunning()
{
    // Something taking long time.
}



Если серьёзно, то прелестей у тасков много. Например, таск может возвращать результат. Для тасков есть унифицированный механизм отмены. Для тасков есть всякие утилиты как ContinueWith, WhenAny, WhenAll и т.д. Для тасков есть паттерн async/await Для тасков есть TPL. И т.д. и т.п. И опять-таки, в десятый раз - таски это вовсе не только многопоточность.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880190
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatИ опять-таки, в десятый раз - таски это вовсе не только многопоточность.

Ну ОК! таски - круто! Только расскажи как. Мне нужны 100500 страниц с инета.

Задаю 100500 тасков, и разгоняются они потихоньку, даж замерял, сначала по 2-3 в секунду, потом больше. Если пулу мин побольше задать то сразу побольше.

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
private static void Main(string[] args)
{
	// parallel tasks limit
	var maxThreads = 32;

	// 100500 URLs
	var urls = new Uri[] {
		// ...
		// ...
	};

	Parallel.ForEach(urls,
		new ParallelOptions { MaxDegreeOfParallelism = maxThreads },
		(url, state, i) => DownloadFromUrl(url));
}

private static void DownloadFromUrl(Uri url)
{
	// do it!
}
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880198
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

Выше был пример с параллельностью, но без асинхронного I/O. С асинхронным I/O будет самую малость хитрее:

Код: 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.
private static void Main()
{
    // parallel task limit
    var maxThreads = 32;

    // 100500 URLs
    var urls = new Uri[] {
        // ...
        // ...
    };

    var urlIndex = 0;
    var tasks = new LinkedList<Task>();

    while(urlIndex < urls.Length || tasks.Count > 0)
    {
        if(tasks.Count < maxThreads)
        {
            tasks.AddLast(
                DownloadFromUrlAsync(urlsIndex++]));
        }
        else
        {
            tasks.Remove(
                Task.WhenAny(tasks).Result);
        }
    }
}

private static Task DownloadFromUrlAsync(Uri url)
{
    throw new NotImplementedException("Implement it!");
}
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880606
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,

Кроме потоков есть ещё ограничение на количество одновременно открытых соединений. И оно отнюдь не бесконечно.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880611
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКроме потоков есть ещё ограничение на количество одновременно открытых соединений. И оно отнюдь не бесконечно.
Ну, я выше как раз аж целых два примера привел, как кол-во одновременных тасков ограничить.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880614
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVosttКроме потоков есть ещё ограничение на количество одновременно открытых соединений. И оно отнюдь не бесконечно.
Ну, я выше как раз аж целых два примера привел, как кол-во одновременных тасков ограничить.

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

А ещё можно увеличить количество соединений, но не до бесконечности опять же :))
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880626
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМне кажется лучше всего тут подойдёт DataFlow, вообще для задачи выкачивания.
Да, сейчас мельком глянул - надо будет присмотреться, что за зверь такой - раньше его как-то не замечал.
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880628
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatiskatelsql,

Выше был пример с параллельностью, но без асинхронного I/O. С асинхронным I/O будет самую малость хитрее:

Код: 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.
private static void Main()
{
    // parallel task limit
    var maxThreads = 32;

    // 100500 URLs
    var urls = new Uri[] {
        // ...
        // ...
    };

    var urlIndex = 0;
    var tasks = new LinkedList<Task>();

    while(urlIndex < urls.Length || tasks.Count > 0)
    {
        if(tasks.Count < maxThreads)
        {
            tasks.AddLast(
                DownloadFromUrlAsync(urlsIndex++]));
        }
        else
        {
            tasks.Remove(
                Task.WhenAny(tasks).Result);
        }
    }
}

private static Task DownloadFromUrlAsync(Uri url)
{
    throw new NotImplementedException("Implement it!");
}



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

это что такое?
какие-то смутные ассоциации с дросселями из электротехники...
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880633
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос про async и task
    #39880634
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachбудет на индекс оф ранже падать. а так прикольно, спасибо!
Да, надо
Код: c#
1.
if(tasks.Count < maxThreads)



заменить на
Код: c#
1.
if(tasks.Count < maxThreads && urlIndex < urls.Length)
...
Рейтинг: 0 / 0
Вопрос про 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
46 сообщений из 46, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос про async и task
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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