Re[13]: Как оптимизировать выполнения 10000 параллельных зад
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.08.16 08:33
Оценка:
Здравствуйте, LWhisper, Вы писали:

LW>Здравствуйте, Serginio1, Вы писали:


S>> Ны дык все их нужно заменять на аналоги

S>>Microsoft.VisualStudio.Threading

S>>AsyncReaderWriterLock

S>>AsyncAutoResetEvent()

S>> И только там , где это невозможно использовать потоки. При этом получится гибридная система, но с минимумом ручных потоков.

LW>Понял, как это работает! Спасибо!
LW>Фактически, мы виси не на локе внутри метода, а возвращаем таску, помещённую в очередь. Когда же приходит Set, для таски выставляется результат выполнения.
LW>Неверно истолковал использование лока внутри AsyncAutoResetEvent.

Так скажем
И задача на await если нет сигнала просто заканчивает работу в потоке и возвращает его в пул.
Когда приходит Set, код на await продолжается в новом потоке.
Там внутри метод на соновании метода создается класс, переменные метода становятся свойствами класса и метод разбивается на методы, и соответсвенно переходы по состоянию.
Я в свое время писал замену рекурсивного обходчика http://rsdn.org:8888/article/alg/tlsd.xml
Автор(ы): Сергей Смирнов (Serginio1)
Дата: 14.08.2004
Пример реализации двухуровневого массива с помощью нового средства С# — generics. Сравнение производительности различных реализаций сортированных списков.
так суть yield та же. Создать отдельный класс с сохранением состояние в свойствах метода и двигаться в зависимости от текущего состояния. КА.

Set просто вызывает ContinueWith задачи.
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.