What you should know about Threads in .NET
VloĆŸit
- Äas pĆidĂĄn 19. 06. 2024
- Nobody is using threads directly anymore in the .NET world we all rather rely on asynchronous Tasks which are executed by threads which are managed by the thread pool, so the only useful thing about threads is knowing how they run your async tasks.
Support my Work đ€ / raw_coding
Buy my Courses đ learning.raw-coding.dev
Buy my Merch đ shop.raw-coding.dev
Join the Community đŹ / discord
Tweet Tweet đŁ / anton_t0shik
Tune in LIVE! đ„ / raw_coding
#aspnetcore #dotnet #csharp
This is a very important video for understanding threads and async code. I strongly suggest using visuals. I personally love your cog analogy, but images might help the mind focus on understanding the concepts without putting too much effort of visualizing a cog.
Even a clumsy ms paint picture can go a long way.
Exactly! Got the same idea while was watching vid
This would have been a great video with some diagrams or animations.
Felt really hard to follow, so I'll probably have to watch it few more times to understand.
Agree
it would be clearer if there was a simple visual presentation
Would be great if you could or already have a video about how such situations can be handled by refactoring the code.
Love the in depthness of this one.
Thank you so much for a dark IDE theme! Appreciate you've heard my ask đ
One more thing to add to this:
- Normally, the Task approach is a good thing. It saves the application from hogging all the threads of the machine and juggles small operations on threads. Like one more layer of juggling on a processor. And it protects beginners from messing up with direct threads. Only for advanced level scenarios one may have to deal with direct threads.
Brilliant!
so if tasks are jamming the threads, is it not a bad idea to use a lot of await keywords, if I remember correctly, you told in your async await video that if awaiting is not required, we should just return a Task and manage awaiting higher up the chain of functions,
my question is that just making, running and returning tasks without using await, do they also block the threads, or do they perform the operation synchronously it is a bit confusing so can you guide on that a bit
Everytime you write await, you are creating a cog before and after the await, the thread pool will place those cogs on the thread.
Cogs donât block, statements such as lock, and getawaitergetresult cause cogs to block.
Love the video. What would be the case of a blocking task? Or something that would jam the thread and not finish? Trying to think of a real world example
There shouldnât be. This tended to happen when people mixed non async synchronisation tools with async code such as locks, which are used inside Semaphore (not slim) ConcurrentBag etcâŠ
That was awesome video About tasks and threads. Would you do a video on configure await equals false vs true?
Love the videos, though miss the light mode with shades
the voice is out of sync...
Something went wrong with the audio and video, it's not synced.
Await it
Yay for darkmode!!!
Nice beard
Although I understand what youâre trying to illustrate, I feel like the cog analogy isnât as intuitive as might have first seemed. Also, working visuals would help a lot too.
Is it just me or is the audio desynched from the video?
can you make video of c# scripting with roslyn?
I have a bunch of vids like that on my video looking for anything specific?
English is too much of a non-native language for me to listen repeating "cogs" to be honest :)
Anyways, Anton, your videos are just diamonds in all that junk of modern .net content. Thank you!
You need to explain and demonstrate better how ACTUAL threads execute an ACTUAL task with logging the Thread.ID for example before this video can really make sense.
Now I am left with the idea that different threadpool threads execute different segments of the underlying task state machine but why do they not execute all of it? Why exactly?