Writing async/await from scratch in C# with Stephen Toub

Поделиться
HTML-код
  • Опубликовано: 9 июн 2024
  • Join Stephen Toub and Scott Hanselman as they dive deep into the world of .NET. On this first episode, Stephen and Scott demystify the world of asynchronous programing with .NET and specifically the magic behind async/await, something that developers use every day. To do so, he builds his very own implementation of async/await completely from scratch and explains throughout the way. If you are looking to go deeper with .NET then you are in the right place.
    Chapters:
    00:00 - Intro
    03:00 - Understanding concurrency, parallelism, and asynchronous
    08:30 - Creating our own ThreadPool
    26:00 - Creating our own Task
    45:30 - Putting together ThreadPool and Tasks
    56:00 - Async iterators and yield
    01:05:00 - Wrap-up
    Resources:
    Blog: devblogs.microsoft.com/dotnet...
    Docs: learn.microsoft.com/dotnet/cs...
    Final Code: gist.github.com/jamesmontemag...
    Connect with .NET:
    Blog: aka.ms/dotnet/blog
    Twitter: aka.ms/dotnet/twitter
    TikTok: aka.ms/dotnet/tiktok
    Mastodon: aka.ms/dotnet/mastodon
    LinkedIn: aka.ms/dotnet/linkedin
    Facebook: aka.ms/dotnet/facebook
    Docs: learn.microsoft.com/dotnet
    Forums: aka.ms/dotnet/forums
    🙋‍♀️Q&A: aka.ms/dotnet-qa
    👨‍🎓Microsoft Learn: aka.ms/learndotnet
    #dotnet #asyncawait #csharp
  • НаукаНаука

Комментарии • 217

  • @majixx
    @majixx 2 месяца назад +318

    Stephen Toub is an absolute treasure for all .NET developers. We defiantly need more content from him. What a great orator and teacher!!

    • @FilipCordas
      @FilipCordas 2 месяца назад +32

      You have to give credit to Hanselman as well he is the best at preventing not to know anything when in fact he is probably as knowledgeable as Stephen.

    • @davecenter2002
      @davecenter2002 2 месяца назад +7

      I love Hanselman and he’s fantastic, but he absolutely is nowhere close to as knowledgeable as Stephen.

    • @shanselman
      @shanselman 2 месяца назад +66

      @@davecenter2002can confirm. We have different jobs. Plus he kinda wrote the thing. 😂

    • @michaltomorowicz596
      @michaltomorowicz596 2 месяца назад +5

      when you have two legends in one vid, debating who is a bigger legend is like arguing which type of sugar is sweeter :D awesome content

    • @san30911
      @san30911 2 месяца назад +2

      Totally. He made me fall in love with C#...

  • @tomglenn6019
    @tomglenn6019 2 месяца назад +73

    I was already very familiar with how tasks/async/await work under the covers but seeing Stephen effortlessly "reimplement" it without copying and pasting or using notes is a humble masterclass of intellectual horsepower.

  • @elerius2
    @elerius2 2 месяца назад +205

    More of this, please! Feels like a channel9 video from back in the day.

    • @dotnet
      @dotnet  2 месяца назад +44

      Oh we got more!!!

    • @theFijian
      @theFijian 2 месяца назад +2

      Lol Channel9 really does feel like "back in the day" 🤣

    • @vacc1001
      @vacc1001 2 месяца назад +1

      @@dotnet Is there a place where I can find more videos like this?

    • @dotnet
      @dotnet  Месяц назад +3

      @@vacc1001 We are releasing more and more. Subscribe and checkout the playlist: ruclips.net/p/PLdo4fOcmZ0oX8eqDkSw4hH9cSehrGgdr1

  • @s.hosseinhosseini8330
    @s.hosseinhosseini8330 2 месяца назад +81

    This was amazing.
    Why I love this?
    1. Scott Hanselman
    2. Stephen Toub
    3. An actual deep dive into a concept with a high-quality explanation of it.

    • @computer9764
      @computer9764 2 месяца назад +1

      3.1. It didn't have a ridiculous thumbnail.

  • @Daysra
    @Daysra 2 месяца назад +24

    Can I just say how great this duo is. Stephen is awesome at explaining things to a great depth, and Scott knows exactly where to stop and ask for clarifications, at an extent that hits just the sweet spot for me, not being too much. More videos from this duo please.

  • @ThorstenSauter
    @ThorstenSauter 2 месяца назад +52

    This was an absolute delight to watch. Thank you Stephen and Scott!

  • @tedchirvasiu
    @tedchirvasiu 2 месяца назад +22

    I love how Scott asks all the right questions.

  • @gpltaylor
    @gpltaylor 2 месяца назад +14

    When I say that I have watched every video and read every article about async and await, I am not exaggerating. However not a single one has come close to educating what this does, why and how to use it and how this is implemented as this does. This is one of the best videos I have seen on this subject.
    I would love to see more videos like this, that deep dive into the technical rather than floating around at surface level

    • @ghostg6107
      @ghostg6107 Месяц назад

      Kevin Gosse also did a deep dive on async await. Stephen Cleary has a walkthrough of the history of Task.

  • @Anubis10110
    @Anubis10110 2 месяца назад +38

    Wow we need more topic like this please. We need more of .net core internals

    • @dotnet
      @dotnet  2 месяца назад +16

      Oh we have more!!!!!

    • @umarahmad3705
      @umarahmad3705 2 месяца назад

      Looking forward to more ​@@dotnet

    • @umarahmad3705
      @umarahmad3705 2 месяца назад +1

      ​@@dotnetor do you already have a playlist with topics like this

    • @umarahmad3705
      @umarahmad3705 2 месяца назад

      Strongly agree

  • @WespazjansDad
    @WespazjansDad Месяц назад +6

    Superb stuff. Scott leads it well, without interrupting too much. And Stephen delivers pure meat. That is one of these few precious resources that despite the fact they last for ah hour, I personally need a few hours to analyze, rewind and make sure all these topics really click in my head.

  • @ArnonDanon
    @ArnonDanon 2 месяца назад +14

    Scott & Stephen rewriting async await reminded me David & Damian rewriting SignalR on stage. All dotnet devs out there are standing on the shoulders of Giants🙏🏼
    This is great content

  • @runtimmytimer
    @runtimmytimer 2 месяца назад +15

    Love this deep dive stuff. Too much 101 content and almost zero 400 content.

  • @CecilPhillip
    @CecilPhillip 2 месяца назад +45

    Great video. Would love to see a dive into IAsyncEnumerable implementations

    • @dotnet
      @dotnet  2 месяца назад +7

      Thanks for the idea! Hope you are doing well Cecil 💖

    • @ChaseFreedomMusician
      @ChaseFreedomMusician 2 месяца назад

      @@dotnet I would love to see an example implementation of IQueryable, it is so non-approachable even for simple tasks, but it is an incredibly powerful feature.

  • @pmnm113
    @pmnm113 2 месяца назад +7

    after watching this I am youtubing about Stephen Toub videos. We need more content from him. I was nice to see low level design of async await here. thanks!

  • @JSWarcrimes
    @JSWarcrimes 2 месяца назад +4

    Now this is some premium content.

  • @MatthiWare
    @MatthiWare 2 месяца назад +9

    Amazing video! I would love to see more content like this.

  • @draganradovac8803
    @draganradovac8803 14 дней назад

    I was going to skip this one thinking it would be the "same old" about async/await. Boy was I wrong. That was amazing. Thank guys.

  • @StephenGierek
    @StephenGierek 2 месяца назад +1

    This was really great! I've always struggled wrapping my head around how async/await works, but this method of instruction is extremely effective in conveying what's going on under the hood. Please, more like this. I could watch these all day long. 🙂

  • @zksward
    @zksward 2 месяца назад +1

    Really love to see this kind of in depth content coming from the team. We need mooooore!

  • @fredyjimenez4853
    @fredyjimenez4853 2 месяца назад +2

    This is best explanation to fully understand async/await.
    Greate quality content
    Kudos to Scott and Stephen

  • @DannysGalaxyTab
    @DannysGalaxyTab 2 месяца назад +8

    What a great video idea. Great hosts to listen to as well.

  • @acedonk
    @acedonk 2 месяца назад +9

    This was a masterclass, thanks!

  • @bity-bite
    @bity-bite 2 месяца назад +4

    Great video! I love this style of rewriting stuff to explain how it works internally. We'd love more videos like this one

  • @fullemptiness
    @fullemptiness 2 месяца назад +2

    What a great idea to teach such a complex topic! It's like you found the missing piece in my (most .NET devs?) understanding to async programming!... Please do a series on async programming like this episode. Thanks!

  • @minimalistdeveloper
    @minimalistdeveloper 2 месяца назад +2

    Loved this. This is the video equivalent of Csharp in Depth and CLR via Csharp. Kindly do more of these level 300 topics.

  • @SlackwareNVM
    @SlackwareNVM 2 месяца назад +2

    This was fantastic! I'd love a couple of more episodes that go into the optimizations that can be layered on top of this implementation.

  • @paaabl0.
    @paaabl0. 2 месяца назад +1

    Brilliant demo! Thank you guys!

  • @--Eric--
    @--Eric-- 2 месяца назад

    Thanks Stephen and Scott, this was a great session. More please... 👏🏼

  • @FXK23
    @FXK23 2 месяца назад +1

    Definitely going to watch this again and code along. Excellent video!

  • @mambocollective
    @mambocollective Месяц назад

    Great video. Learnt so much from this. Definitely need more content like this, especially with Stephen. It worked so well with him leading the way and then you pulling him back with questions I had in my own head. Looking forward to more of this sort of content.🤩

  • @CraigShearer
    @CraigShearer 2 месяца назад +2

    Great info. Been away from C# for a few years, but nice to see this detailed as to how async/await works.

  • @imranhussain8700
    @imranhussain8700 2 месяца назад +3

    This is some crazy stuff. Stephen Toub is amazing. Scott Hanselman has done a fantastic job as usual for the viewers to ensure the topic is covered as much in depth as possible.
    Thank you very much. We need morrrrrrrrrrrrrrreeeeeeeeeeeeeeeeeee of these for sure.

  • @VukManic
    @VukManic 2 месяца назад

    What an amazing video! This is one of best video to understand async await!!!! Thanks to both of you! Really enjoyed it!

  • @moke_codes
    @moke_codes 2 месяца назад +1

    This was amazing! I wish we could see more advanced topics like this. Learned a lot! Thanks guys!

  • @vedantkoditkar5968
    @vedantkoditkar5968 2 месяца назад

    If only there is a way to give million up vote to this video. I always look forwards to Stephen Toub videos, his explanation is top notch.

  • @ChaseFreedomMusician
    @ChaseFreedomMusician 2 месяца назад +1

    This is by far one of my favorite videos to-date.

  • @neeleshbodgal7479
    @neeleshbodgal7479 2 месяца назад

    That helps to understand more and better about the Task API. Stephen Toub blogs are worth reading that always teach me something new 😀

  • @codewithkhondamir
    @codewithkhondamir 2 месяца назад +2

    That’s amazing. Thanks Scott and Stephen.

  • @cheekychappy1234
    @cheekychappy1234 Месяц назад

    Such a fantastic video! Keep producing more and don't be afraid to dive deeper and deeper.

  • @fifty6737
    @fifty6737 2 месяца назад +2

    awesome video, always pleasure to listen to stephen

  • @emiraksoy1520
    @emiraksoy1520 2 месяца назад +1

    This was amazing we want more content with Steve 💯💯

  • @krccmsitp2884
    @krccmsitp2884 2 месяца назад +1

    Amazing! Thanks to both of you! 🙂

  • @RickJohnn
    @RickJohnn 2 месяца назад +1

    Excellent from start to finish.

  • @Hereson
    @Hereson 2 месяца назад +1

    Amazing explanation, please do more of these!

  • @danielvillalba4457
    @danielvillalba4457 2 месяца назад +1

    Wow, just amazing information and even better way to explain it! Thanks

  • @pachanga5382
    @pachanga5382 2 месяца назад +1

    Excellent video-I was wondering at first why I needed to know this, and now I know!

  • @papafe
    @papafe 2 месяца назад +2

    Super interesting! I think it would be interesting also to dive deep into SynchronizationContext and how it relates to the ExecutionContext that was shown in the video

  • @stevanfreeborn
    @stevanfreeborn 2 месяца назад +3

    Thank you for making this! 🙏🏻

  • @v001
    @v001 2 месяца назад

    Stephen Toub is a legend! great talk, need more of this

  • @jmbrjmbr2397
    @jmbrjmbr2397 12 дней назад

    Very interesting and enlightening lecture. Thank you for your efforts.

  • @TheProTip
    @TheProTip Месяц назад

    This is great. I've never actually heard Stephen talk though I've read a bunch of his perf reports and other posts. He presents very well.

  • @danfriedman7009
    @danfriedman7009 Месяц назад

    Immensely helpful. You guys rocked this presentation. Can't wait to watch the LINQ videos (and I hope there is more on the way).

  • @damianpio1443
    @damianpio1443 2 месяца назад

    Loved this video, hope we will get more of these

  • @michaltomorowicz596
    @michaltomorowicz596 2 месяца назад

    What a great material guys, massive kudos.

  • @DOTNETMAN
    @DOTNETMAN 2 месяца назад +3

    The Legends of .NET.

  • @thishandleistaken
    @thishandleistaken 2 месяца назад +1

    Amazing video! Thanks!

  • @sjark5000
    @sjark5000 26 дней назад

    This is just fantastic content, more of this please :)

  • @paulecampbell
    @paulecampbell 2 месяца назад +1

    Stephen is on another level!

  • @giovannimorleschi1750
    @giovannimorleschi1750 Месяц назад

    Awesom, semply awesom, you have to do a lot of this video please! Stephen Tuob, you are ten thousand time better then the better professor in tis solar system!

  • @SharpGIS
    @SharpGIS 2 месяца назад +1

    Loved this. Please do more Level 3-400 content!

  • @theFoodieCyclist
    @theFoodieCyclist 2 месяца назад

    Loved it! You guys are awesome!

  • @zakizaz1
    @zakizaz1 2 месяца назад +4

    Great content . Thank you

  • @wolfgangdiemer2511
    @wolfgangdiemer2511 2 месяца назад +2

    Thank you very much, awesome content

  • @DotNetRyanYT
    @DotNetRyanYT 2 месяца назад +1

    Thanks for this. Async/await was always a black box to me, but now I feel I have lifted the lid on the box and took a look inside.

  • @rasmussoeborg450
    @rasmussoeborg450 2 месяца назад

    Very informative - Great explanation

  • @azarthi
    @azarthi 2 месяца назад

    Love this super easy to follow!

  • @jackkendall6420
    @jackkendall6420 2 месяца назад +1

    This was incredibly good.

  • @sudeshryan8707
    @sudeshryan8707 2 месяца назад +8

    This is gem of a tutorial. Thanks guys

  • @user-we2gj9uz7r
    @user-we2gj9uz7r 2 месяца назад

    Excellent content! Thank you!

  • @chenc671
    @chenc671 2 месяца назад

    Wow, It was a Master piece when the await works at the end !

  • @karthiks4347
    @karthiks4347 28 дней назад

    Simply great!!👍

  • @MatteoGariglio
    @MatteoGariglio Месяц назад

    I wish I watched this video long time ago 😅.
    Thank you so much Stephen, the explanations are really instructive.

  • @tarun-hacker
    @tarun-hacker 2 месяца назад +2

    Stephen Toub is awesome.

  • @timeless-sg
    @timeless-sg Месяц назад

    EXCELLENT. THANK YOU STEPHEN.

  • @jimiscott
    @jimiscott 2 месяца назад +4

    This is superb.

  • @unknown.artist.track3
    @unknown.artist.track3 Месяц назад

    I had already bookmarked your article from dev blog about async await)))

  • @SajadJalilian
    @SajadJalilian 2 месяца назад

    We really need Stephen do more live coding. He is really good at delivering what he does

  • @semihartan
    @semihartan 2 месяца назад

    Amazing presentation. Thank you both!

  • @robl39
    @robl39 2 месяца назад +3

    Now get David Fowler to write Kestrel from scratch. I’d love to see that.

  • @rafaelfelipe3986
    @rafaelfelipe3986 Месяц назад

    Amazing content. Thank you so much for that.

  • @thedanielspindler
    @thedanielspindler 2 месяца назад

    Loved this. Amazing! Now I just need to re-watch it another 5 times at 0.5 speed to really soak it all in.

  • @brechtlaitem
    @brechtlaitem 2 месяца назад +4

    We want more, we want more!!

    • @dotnet
      @dotnet  2 месяца назад +3

      We are making more right now!!!!!!!!!!!!!!!!

  • @LILogisticaIntegrada
    @LILogisticaIntegrada 2 месяца назад +2

    Thanks for this!

  • @KenRossPhotography
    @KenRossPhotography 2 месяца назад

    Awesome video - so many great nuggets here. Even if you think you *know* async/await, you'll get value from watching this (maybe more than once) 🙂

  • @stephajn
    @stephajn 2 месяца назад

    Like Admiral Kirk said to Saavik in Wrath of Khan, “You have to know WHY things work on a starship.”
    This was definitely really cool to watch and follow! Gonna have to watch it again on a PC as opposed to my iPad, but it is well worth it!

  • @kRySt4LGaMeR
    @kRySt4LGaMeR Месяц назад

    Watching Stephen doing this is amazing. Scott on the other hand has extremely lack luster contributions.

  • @dealsman
    @dealsman Месяц назад

    Intense! Both of you!

  • @BryanKelly
    @BryanKelly Месяц назад

    First, I loved this video. Just everything about it was good.
    I would love a follow up to cover:
    1. more of the async/await keywords (the stuff you were getting to at the very end)
    2. Why doing the "bad" things is bad. (ex. .Result, and others I'm failing to think of now)
    3. Async enumerable

  • @sachinvshishth
    @sachinvshishth 2 месяца назад +1

    Thank you for the insightful session. Just a quick request: could you please utilize the dark theme whenever feasible?

  • @aptypp
    @aptypp 2 месяца назад +1

    Thanks for video!

  • @tiZyJoshi
    @tiZyJoshi Месяц назад

    this was awesome, ty!

  • @PhoenixCustomerInsights
    @PhoenixCustomerInsights 2 месяца назад +2

    I would love to strive for that clarity of knowledge in tasks. I'm holding on to this video for another review and letting it wash over me a few times. Could there be a continuation in the parallel processing of tasks, comparing concurrency and parallel execution of Tasks?

  • @Dotnetawy
    @Dotnetawy 2 месяца назад +2

    Awesome 👌

  • @AslamNazeerShaikh
    @AslamNazeerShaikh 2 месяца назад +6

    Please make videos on "cancellation token"

  • @shadowspyes
    @shadowspyes 2 месяца назад

    please more high detail low level videos like this!

  • @sotsch9280
    @sotsch9280 2 месяца назад +1

    So much more informative than the ordinary "information copy paste shit" out there :D thanks alot!

  • @MatPolutta
    @MatPolutta 2 месяца назад +1

    I needed this. Thanks

    • @MatPolutta
      @MatPolutta Месяц назад

      Just watched a 2nd time. Almost there. 3rd time is the charm? Let's hope.

  • @familienmitic6623
    @familienmitic6623 2 месяца назад +1

    Scott is just awesome

  • @tedchirvasiu
    @tedchirvasiu 2 месяца назад

    Wow, just as I needed this

  • @pylvr8021
    @pylvr8021 2 месяца назад +1

    god damn it, this is a quality content