GopherCon 2017: Kavya Joshi - Understanding Channels

  Рет қаралды 114,090

Gopher Academy

Gopher Academy

Күн бұрын

Channels provide a simple mechanism for goroutines to communicate, and a powerful construct to build sophisticated concurrency patterns. We will delve into the inner workings of channels and channel operations, including how they're supported by the runtime scheduler and memory management systems.

Пікірлер: 89
@bepsays
@bepsays 7 жыл бұрын
This is a great talk; I would never have imagined finding a talk about "the inner workings of channels and channel operations" so interesting.
@user-iy5md6ee2g
@user-iy5md6ee2g 4 жыл бұрын
She explained the implementation of channel in such a understandable way, great talk!
@vladimirbauer6604
@vladimirbauer6604 7 жыл бұрын
Must watch for every gopher out there!
@djason_music
@djason_music 6 жыл бұрын
One of the best Go talks I’ve ever seen! Great explanations. Love the enthusiasm.
@giovanni.tirloni
@giovanni.tirloni 7 жыл бұрын
I find this behind-the-scene explanation is the best way to explain channels. It removes the magic and makes it easier to understand. Thank you!
@samuelorozco255
@samuelorozco255 5 жыл бұрын
Wow, this is a really great talk. Exactly what I wanted to listen to.
@thisprofileismt
@thisprofileismt 5 жыл бұрын
The structure and concepts behind goroutines and channels are presented in a very nice & simple manner. Thanks for this great talk, Kavya!
@halorium
@halorium 6 жыл бұрын
Really great job at explaining a relatively complex topic in an easy to understand and fun way. :)
@dharmjitsingh
@dharmjitsingh 6 жыл бұрын
Such a complex topic explained in a such a simple manner. Really a great talk
@mohamadmawed6078
@mohamadmawed6078 6 жыл бұрын
I highly appreciate your great and informative explanation Kayva Joshi .
@saadabbasi2063
@saadabbasi2063 4 жыл бұрын
Very well done. Thanks for this amazing contribution.
@vasubabujinagam5977
@vasubabujinagam5977 4 жыл бұрын
this is the best talk ever on concurrency and channels, Thanks Gopher Academy and Kavya Joshi
@iammen7
@iammen7 5 жыл бұрын
Great talk! Thanks, Kavya Joshi!
@sofikulmallick3766
@sofikulmallick3766 3 жыл бұрын
This is such an amazing talk, makes clear inner working of channel. This will help to write concurrent codes more better way than I am doing today in go
@sergioontech
@sergioontech 6 жыл бұрын
Great talk! Thank you so much!
@tushargupta3236
@tushargupta3236 Жыл бұрын
Loved this!
@hyrdeshgangwar
@hyrdeshgangwar 4 жыл бұрын
Great talk! One of the best!
@pfryscak
@pfryscak 6 жыл бұрын
Really enjoyed this explanation; thanks!
@robgreen13
@robgreen13 5 жыл бұрын
Excellent material and presentation, thanks you.
@Ramu294
@Ramu294 4 жыл бұрын
Kavya Joshi -done it in an understanding manner...presentation slides was also superb..
@fcamel
@fcamel 5 жыл бұрын
Great talk! This topic is interesting and useful!!
@bhupeshimself
@bhupeshimself 4 жыл бұрын
I have just started playing with channel. Thanks for this talk 👍
@chiranjibghorai6950
@chiranjibghorai6950 5 жыл бұрын
Great talk, I finally understand GO Channels :)
@TechEdith
@TechEdith 3 жыл бұрын
Great Talk!! Thank you for such an insight into Go Channels
@Mukesh-zh7dm
@Mukesh-zh7dm Жыл бұрын
Thanks for the amazing informative content Gopher Academy. The speaker explained everything in very detailed crisp and with nice presentation.
@meetalodariya5972
@meetalodariya5972 2 жыл бұрын
Great explanation of channel mechanics!
@asn90436
@asn90436 5 жыл бұрын
Great talk, thank you so much
@jameshwest
@jameshwest 4 жыл бұрын
Great talk. Learned lots of useful things. Great formatting. I could see all the details of the slides on my 13" screen
@jiaxichen9373
@jiaxichen9373 6 жыл бұрын
It is a great talk! Thanks!
@zaofei6281
@zaofei6281 5 жыл бұрын
Excellent , i know the channel a lot that i ever have
@saravanansaibaba8374
@saravanansaibaba8374 Жыл бұрын
Brilliant talk. Learnt a lot.
@brister61
@brister61 5 жыл бұрын
Excellent talk.
@prydt
@prydt 2 жыл бұрын
awesome and simple talk!
@seriyanto
@seriyanto 4 жыл бұрын
really amazing talk !
@kkmingming
@kkmingming 5 жыл бұрын
Quite an interesting intro to the channel mechanism.
@gauravsharma1455
@gauravsharma1455 5 жыл бұрын
Really awesome talk
@dardanbekteshi3177
@dardanbekteshi3177 Жыл бұрын
Fantastic talk
@pengdu7751
@pengdu7751 4 жыл бұрын
great presentation!
@53nat0r
@53nat0r Жыл бұрын
Way cool explanation. The best teacher. W'd luv to see more explanations from here.
@user-rt7ye2ry4m
@user-rt7ye2ry4m 5 жыл бұрын
Great talk!
@romankonovalov2588
@romankonovalov2588 9 ай бұрын
just the best
@tommytin6978
@tommytin6978 3 жыл бұрын
Many thanks!
@RodolfoBarriga
@RodolfoBarriga 6 жыл бұрын
great talk ....
@mubiale4060
@mubiale4060 4 жыл бұрын
Thanks, so clear
@cholocatelabs
@cholocatelabs 4 жыл бұрын
Great talk
@SteveWang92
@SteveWang92 Жыл бұрын
It is helpful to me extremely
@gaby1491
@gaby1491 2 жыл бұрын
great talk!
@chaoleili9339
@chaoleili9339 5 жыл бұрын
Great!
@xuyangsun7948
@xuyangsun7948 Жыл бұрын
great; expect more talks
@CriticalThinkerShan
@CriticalThinkerShan Жыл бұрын
awesome
@kamilziemian995
@kamilziemian995 3 жыл бұрын
1:35 I believe that there is a typo and line "ch := make(chan Task, 3)" should be replaced by "taskCh := make(chan Task, 3)". Also worker function should be defined by "worker(taskCh chan Task)".
@harshvishwakarma1890
@harshvishwakarma1890 2 жыл бұрын
yep, was thinking about the same
@haaarshiiiit
@haaarshiiiit Жыл бұрын
+1
@dksingh04
@dksingh04 5 жыл бұрын
Great talk, got the clear understanding of channels now. Must watch for other gophers.
@gokukakarot6323
@gokukakarot6323 3 жыл бұрын
there is a 1 element lifo as well for performance benefits
@zakariachahboun
@zakariachahboun 2 жыл бұрын
Cool thanks 👏
@kennethcarvalho3684
@kennethcarvalho3684 Жыл бұрын
Kavya has become a synonym for Channel
@twistedlog24
@twistedlog24 6 жыл бұрын
This is such an amazing talk/
2 жыл бұрын
Rob Pike and Kavya Joshi do best go talks. Change my mind.
@garywzh
@garywzh 7 жыл бұрын
cool
@Makos1996
@Makos1996 7 жыл бұрын
yup, this is pretty cool
@pirminschneider7106
@pirminschneider7106 6 жыл бұрын
I'm always wondering what sort of people downvote a video like this.
@remariorichards8237
@remariorichards8237 6 жыл бұрын
me too
@ByteSizedSociety
@ByteSizedSociety 6 жыл бұрын
Alphabetically sorted people?
@asiddiqi123
@asiddiqi123 5 жыл бұрын
C++ devs
@startup2693
@startup2693 3 жыл бұрын
in case of early reader, G1 decides to write directly to G2 memory location, how does it resume the G2? also how does it tell G2 not to read from buffer? the pending instruction in G2 is to read from buffer right?
@oguzhanyldrm8179
@oguzhanyldrm8179 3 жыл бұрын
this is a great talk thanks but I don't like calling things "magic", actually we amaze me about go it is reasonably easy to understand what will the code does
@bobx7711
@bobx7711 Жыл бұрын
Does anyone know where can I get the slides?
@twihc294
@twihc294 11 ай бұрын
If we are multiplexing g1 and g2 on one os thread arent we at the mercy of the scheduler , for e.g. we can just execute g1 enqueue forever if the channel is not full and no work is done Ofc this is assuming one os thread, does go have enough context not to use the same thread? @google
@evansonmwangi71
@evansonmwangi71 4 жыл бұрын
Wish she had written a book..Or is there such a book about internals of Go concurrency primitives.
@inancgumus4125
@inancgumus4125 4 жыл бұрын
evanson mwangi Why? There's nothing to say about this more. Really. It's that simple. The rest of the details are in the Go source code.
@sonicgoogle
@sonicgoogle 2 жыл бұрын
gdd
@shuaiyang105
@shuaiyang105 2 жыл бұрын
where is the pre?
@TheRoxas13th
@TheRoxas13th 6 жыл бұрын
How the knowledge here helps us on daily basis? I haven't watched the video yet, but the deep explanation upfront is so hard to follow.
@MauricioAAntunes
@MauricioAAntunes 5 жыл бұрын
The concepts she describes could be applied by you. Also, not everything needs to be usable on daily basis. Learning is a construction - with this video you got some blocks. Save them for the future (that might be tomorrow) :)
@thachnnguyen
@thachnnguyen 2 жыл бұрын
Seriously, the question is still "why channel?" versus the simple use of a mutex? They're both blocking. If channels block everywhere, obviously using a mutex is clearly better. All channels do is to move the isolation from one place (which can be a bottleneck) to another (a smaller bottleneck). All the "cool" things mentioned aren't cool, just necessary things not to block everywhere. What would be cool is what makes channel a communication means preferred over mutex.
@kmeaw
@kmeaw Жыл бұрын
A channel is a higher-level construct compared to a mutex, which is low-level and it is too easy to use them in a wrong way - lock/unlock them in a wrong order, forget to lock/unlock and so on. With channels you can solve simple tasks in a simple way. And most importantly, you can compose these solutions without introducing much complexity. Sure, you can rewrite any code by replacing channels with mutex-guarded queues (and even cut some corners to get better performance) but there is a Go proverb "Don't communicate by sharing memory, share memory by communicating" for a reason - for most Go programmers the mental tax of using mutex is higher.
@praveenkumar4951
@praveenkumar4951 6 жыл бұрын
At kzfaq.info/get/bejne/gaiKn7FhzuDJmY0.html right hand side func worker(ch) should have *task :=
@danielsokil9529
@danielsokil9529 6 жыл бұрын
so a unbuffered goroutine can create unlimited tasks in the channel?
@remariorichards8237
@remariorichards8237 6 жыл бұрын
When you said Go multiplexes the goroutines onto the OS main threads, isent context switching invovled?
@Wren6991
@Wren6991 6 жыл бұрын
I think it's more SJ LJ or trampoline style context switching, all just userspace function calls. Not as expensive as getting the OS involved.
@florenckaf
@florenckaf Жыл бұрын
The style is a bit too cheesy but the contents is very interesting.
@RR-ly4vy
@RR-ly4vy 3 жыл бұрын
Ok. That go routine modifies stack of the other, for performance to do the trick. . . . . . . . . (searches how to learn rust faster)
@andreypanin2136
@andreypanin2136 2 жыл бұрын
Why does she sound so aggressive?
@Padeir0
@Padeir0 3 жыл бұрын
Great talk!
@codephilosopher
@codephilosopher 2 жыл бұрын
Great talk!
Understanding Allocations: the Stack and the Heap - GopherCon SG 2019
21:39
GopherCon 2018: Kavya Joshi - The Scheduler Saga
30:48
Gopher Academy
Рет қаралды 54 М.
Red❤️+Green💚=
00:38
ISSEI / いっせい
Рет қаралды 87 МЛН
Double Stacked Pizza @Lionfield @ChefRush
00:33
albert_cancook
Рет қаралды 111 МЛН
A little girl was shy at her first ballet lesson #shorts
00:35
Fabiosa Animated
Рет қаралды 15 МЛН
Concurrency is not Parallelism by Rob Pike
31:22
gnbitcom
Рет қаралды 126 М.
Golang Channels Or Wait Groups? Let Me Explain.
18:32
Anthony GG
Рет қаралды 20 М.
Goroutines: Under the Hood | Vicki Niu | Go Systems Conf SF 2020
22:11
Go Error Handling Best Practices & Advanced Tips
6:49
Golang Dojo
Рет қаралды 36 М.
Goroutines Crash Course (Mutex, Channels, Wait Group, & More!)
15:42
Master Go Programming With These Concurrency Patterns (in 40 minutes)
46:15
GopherCon 2017: Mitchell Hashimoto - Advanced Testing with Go
44:59
Gopher Academy
Рет қаралды 47 М.
Rust and RAII Memory Management - Computerphile
24:22
Computerphile
Рет қаралды 222 М.
Go 1.22 is bringing about a new future for the language.
4:32
Dreams of Code
Рет қаралды 152 М.
Какой ноутбук взять для учёбы? #msi #rtx4090 #laptop #юмор #игровой #apple #shorts
0:18
Запрещенный Гаджет для Авто с aliexpress 2
0:50
Тимур Сидельников
Рет қаралды 949 М.