Информация об изменениях

Сообщение Re[27]: dotnet vs java 2016-2020 от 13.10.2016 9:35

Изменено 13.10.2016 9:42 Serginio1

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

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


S>>>> Поверь разница велика.

S>>·>Не понял. Ты хочешь скзать, что с tasks код "while(true)..." заработает быстрее и будет показывать лучшее время gc? За счёт чего?
S>> За счет того, что состояние хранит не на стеке потока, и в регистрах, а в полях класса. А те которые в потоке с ними проще работать, так как в пуле их немного.
·>Какое ты увидел состояние в том коде? В каких полях какого класса?
А поток, что выполняет? В Task создается класс и автомат для перехода по await
S>>>> А кстати в .Net Core для библиотек Thread просто нет.
S>>·>?
S>> Нужно отдельно добавлять пакет System.Threading.Thread
S>>http://stackoverflow.com/questions/38080995/net-core-1-0-equivalent-for-system-threading-thread-currentthread-managedthread
S>> Да там например Sleep отсутствует. Для этого используется await Task.Delay.
·>Эээ... И что? Я всё ещё не понимаю как это относится к тому коду, к особенностям работы gc и к LL?
Это относится к тому, что потоки это уже старое ненужное.

S>> Кстати ветка по поводу асинхронного программирования. Как оптимизировать выполнения 10000 параллельных задач?

·>В случае LL выполнение 10000 параллельных задач не бывает. Не надо путать low latency и high throughput.

Ты привел какой то непонятный пример с огромным количеством потоков. На GC как раз влияет количество потоков, где нужно его останавливать, смотреть стек потока регистры.
В Task все данные хранятся внутри генерируемого класса. Async/await и механизм реализации в C# 5.0
https://habrahabr.ru/post/260217/
Re[27]: dotnet vs java 2016-2020
Здравствуйте, ·, Вы писали:

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


S>>>> Поверь разница велика.

S>>·>Не понял. Ты хочешь скзать, что с tasks код "while(true)..." заработает быстрее и будет показывать лучшее время gc? За счёт чего?
S>> За счет того, что состояние хранит не на стеке потока, и в регистрах, а в полях класса. А те которые в потоке с ними проще работать, так как в пуле их немного.
·>Какое ты увидел состояние в том коде? В каких полях какого класса?
А поток, что выполняет? В Task создается класс и автомат для перехода по await
S>>>> А кстати в .Net Core для библиотек Thread просто нет.
S>>·>?
S>> Нужно отдельно добавлять пакет System.Threading.Thread
S>>http://stackoverflow.com/questions/38080995/net-core-1-0-equivalent-for-system-threading-thread-currentthread-managedthread
S>> Да там например Sleep отсутствует. Для этого используется await Task.Delay.
·>Эээ... И что? Я всё ещё не понимаю как это относится к тому коду, к особенностям работы gc и к LL?
Это относится к тому, что потоки это уже старое ненужное.

S>> Кстати ветка по поводу асинхронного программирования. Как оптимизировать выполнения 10000 параллельных задач?

·>В случае LL выполнение 10000 параллельных задач не бывает. Не надо путать low latency и high throughput.

Ты привел какой то непонятный пример с огромным количеством потоков. На GC как раз влияет количество потоков, где нужно его останавливать, смотреть стек потока регистры.
В Task все данные хранятся внутри генерируемого класса. Async/await и механизм реализации в C# 5.0
https://habrahabr.ru/post/260217/

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