Многопоточное и асинхронное программирование в .NET. Владимир Крамар .NET Fest 2018

Sdílet
Vložit
  • čas přidán 7. 08. 2019
  • The talk from .NET Fest conference in Kyiv, Ukraine.
    Presentation: bit.ly/2DdtUwE
    Fb: / dotnetfest
    Website: dotnetfest.com/
    Раскрывается тема проектирования и реализации многопоточных и асинхронных приложений для платформы .NET. Обсуждаются вопросы создания потоков, их дальнейшего использования и синхронизации в контексте масштабируемости и быстродействия. Рассматриваются общие ошибки и заблуждения при проектировании многопоточности, а также способы повышения производительности.

Komentáře • 34

  • @antonvalintsev1384
    @antonvalintsev1384 Před 4 lety +28

    Если ты что-то не можешь обьяснить просто - ты этого не знаешь. Владимир, просто супер! Отлично поднял вопрос. Жму руку!

  • @alekseev74
    @alekseev74 Před 2 lety +18

    Very интересная information. It помогла мне a lot.
    Без шуток, сделал важные заметки для себя. Спасибо за доклад.

  • @pprometey
    @pprometey Před rokem

    Шикарный доклад. По существу, без воды, с глубоким пониманием как это работает, а не просто как обезьяна - "использую, сам не понимая, главное работает". Спикеру респект. И очень доступно. За счет понимания спикером всей концепции.

  • @Kuvaldis1983
    @Kuvaldis1983 Před 2 lety

    Понравилось, спасибо!

  • @BlushSmith
    @BlushSmith Před 2 měsíci

    Докладчик очень хорош, спасибо!

    • @timur2887
      @timur2887 Před 29 dny

      сомнительно, но окэй

  • @IlyaArlenka
    @IlyaArlenka Před 4 měsíci +1

    Ничего не понял, но очень интересно)

  • @mirlan19
    @mirlan19 Před rokem

    Спасибо

  • @viacheslav1392
    @viacheslav1392 Před 3 lety +9

    после аттентивного ревьюинга данного видео могу нотифицировать автора о комплитальном эмилиейшонге моих ушей

  • @daniilevsienko4060
    @daniilevsienko4060 Před rokem +1

    Пример на 44-30 не совсем понятен. Как я понимаю код преобразуется в стейт машину, в switch конструкцию в реализации на данный момент, то есть по идее итерация for доходит до await конструкции, поток отдается и возобновляет свое выполнение после того как async операция завершилась. И если так рассуждать, то никаких 20 одновременно открытых файлов не будет. Что не так?

  • @vladoss4643
    @vladoss4643 Před 9 měsíci +2

    Читаю "Владимир Крамник" Асинхронное и многопоточное...
    Думаю чегоооо?????
    (Люблю шахматы)

  • @user-oj7lo6mv7h
    @user-oj7lo6mv7h Před 11 měsíci

    я видел пример использования async/await на конференции 2014 года в мск, в нем крайне редко использовался новый поток Оо
    в основном все делалось в одном потоке

  • @user-lt7rn4of7y
    @user-lt7rn4of7y Před 3 lety

    3:20 Один поток не занимает 1 мбайт. Это его виртуальное пространство в 32 разрядной сборке (4 мб в 64-разрядной). Фактически 1 более менее пустой поток в среднем занимает 8-10 страниц памяти, т.е всего около 32-36 кбайт памяти.

    • @rustyscarlet
      @rustyscarlet Před 2 lety +4

      Речь не о потоке, а его стеке, более того сами мелкомягкие заявляют, что ARM, x86 и x64 имеют размер стека по умолчанию равный 1 МБ. Также в конце упоминается, что не всегда стек занимает 1мб.

    • @user-lt7rn4of7y
      @user-lt7rn4of7y Před 2 lety +1

      @@rustyscarlet Да, стек, неправильно выразился. На каждый поток выделяется свой стек, размер виртуального пространства которого лимитирован определённой величиной. Напимер для 32 разрядной системы это около мегабайта по умолчанию. Но это не значит что этот мегабайт сразу алоцирован для потока. Физическая память выделяется по требованию, страницами. И в среднем, каждому потоку нужно всего несколько страниц стека. В этом можно убедится, если запустить например process hucker и посмотреть сколько страниц и памяти и физически байт, выделяется для каждого потока любого многопоточного приложения.

    • @user-ll2xw7tn6v
      @user-ll2xw7tn6v Před 2 lety +3

      @@user-lt7rn4of7y память в куче выделяется последовательно, по мере необходимости, память в стеке - целиком и сразу.

  • @735476589
    @735476589 Před rokem

    Афтар по моему чето курил

  • @igiarbl
    @igiarbl Před rokem +3

    44:48 что-то я не понял как там мгновенно создадутся 20 потоков к файлам. Там вроде как это будет происходить по очереди и каждая задача будет awaitиться, новая не начнется пока не закончится предыдущая итерация.

    • @timur2887
      @timur2887 Před 29 dny

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

  • @user-tv5rk1fj7o
    @user-tv5rk1fj7o Před 3 lety +6

    Очень сильно режет слух мешанина из русского и английского. Да и в целом доклад какой-то скомканный...

    • @user-zd6di5mq9z
      @user-zd6di5mq9z Před 2 lety +5

      Почему так? У нас вся литература на английском, терминология всем понятна.

    • @user-tv5rk1fj7o
      @user-tv5rk1fj7o Před 2 lety +4

      @@user-zd6di5mq9z Потому что сейчас очень много материалов на русском языке с хорошим переводом в сети, а в книгах так и подавно. Хочешь читать\говорить на русском - пожалуйста. На английском - тоже никто не запрещает, если навык позволяет. Но только не оба варианта одновременно.
      Я не то чтобы совсем против англицизмов - иногда очень сложно подобрать перевод к слову или выражению, потому что в русском языке аналогичного понятия нет. Но в случае наличия подходящего по значению русского слова считаю что использоваться должно именно оно, дабы не загаживать язык всяким непотребством аки "треды", "таски", "чекинить", "резолвить" и т.д.

    • @user-zd6di5mq9z
      @user-zd6di5mq9z Před 2 lety +7

      ​@@user-tv5rk1fj7o , но ведь в команде разработки все говорят вот такими словами, разве нет?

    • @vitalivanovich1039
      @vitalivanovich1039 Před rokem

      @@user-tv5rk1fj7o Не забывайте, что в русском языке ещё есть правила использования знаков препинания.

    • @imagine_jl26
      @imagine_jl26 Před rokem +2

      @@user-tv5rk1fj7o потому, что если сравнить кол-во оригинальных материалов на англ. и то, что переведено на русский, то все самые свежие и актуальные выступления/книги/статьи и т.д. - не переведены. Переводы просто катастрофически не поспевают за всеми обновлениями и нововведениями. Как следствие, если мы в русскоязычном сообществе, то мы общаемся на русском, но как разработчики (если мы, как я считаю - хорошие разработчики), работаем с английским языком, получаем и информацию и т.д. По этому использование англицизмов в этом случае - естественная практика, наоборот, позволяющая улучшить понимание, потому что в 95% случаев ты работаешь именно с "оригинальными" названиями и определениями, а не их адаптацией под русский язык, иначе вас просто тяжело будет понять. А держать в голове по 2 определения и постоянно ментально между ними переключаться - тоже такая себе идея. Так что если вы разработчик и это вам режет слух, то что тут сказать, или терпеть, или корректировать свой профессиональный путь.