Understanding Channels - Kavya Joshi

Поділитися
Вставка
  • Опубліковано 1 гру 2024

КОМЕНТАРІ •

  • @bepsays
    @bepsays 7 років тому +130

    This is a great talk; I would never have imagined finding a talk about "the inner workings of channels and channel operations" so interesting.

  • @SimonSun-j5u
    @SimonSun-j5u 4 роки тому +28

    She explained the implementation of channel in such a understandable way, great talk!

  • @dixztube
    @dixztube 2 місяці тому +1

    This was actually really good. Very good but I had to watch it a couple times. Great work!

  • @djason_music
    @djason_music 6 років тому +22

    One of the best Go talks I’ve ever seen! Great explanations. Love the enthusiasm.

  • @giovanni.tirloni
    @giovanni.tirloni 7 років тому +8

    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!

  • @dharmjitsingh
    @dharmjitsingh 6 років тому +14

    Such a complex topic explained in a such a simple manner. Really a great talk

  • @vasubabujinagam5977
    @vasubabujinagam5977 4 роки тому +2

    this is the best talk ever on concurrency and channels, Thanks Gopher Academy and Kavya Joshi

  • @vladimirbauer6604
    @vladimirbauer6604 7 років тому +15

    Must watch for every gopher out there!

  • @asymptotion
    @asymptotion 2 місяці тому

    I view this video three times, this should be viewed by all golang developer.

  • @kamilziemian995
    @kamilziemian995 3 роки тому +12

    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)".

  • @Mukesh-zh7dm
    @Mukesh-zh7dm Рік тому

    Thanks for the amazing informative content Gopher Academy. The speaker explained everything in very detailed crisp and with nice presentation.

  • @thisprofileismt
    @thisprofileismt 6 років тому +1

    The structure and concepts behind goroutines and channels are presented in a very nice & simple manner. Thanks for this great talk, Kavya!

  • @Ramu294
    @Ramu294 4 роки тому

    Kavya Joshi -done it in an understanding manner...presentation slides was also superb..

  • @samuelorozco255
    @samuelorozco255 6 років тому +3

    Wow, this is a really great talk. Exactly what I wanted to listen to.

  • @sofikulmallick3766
    @sofikulmallick3766 4 роки тому

    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

  • @53nat0r
    @53nat0r Рік тому

    Way cool explanation. The best teacher. W'd luv to see more explanations from here.

  • @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

  • @xuyangsun7948
    @xuyangsun7948 2 роки тому

    great; expect more talks

  • @saadabbasi2063
    @saadabbasi2063 4 роки тому +1

    Very well done. Thanks for this amazing contribution.

  • @halorium
    @halorium 6 років тому

    Really great job at explaining a relatively complex topic in an easy to understand and fun way. :)

  • @mohamadmawed6078
    @mohamadmawed6078 6 років тому

    I highly appreciate your great and informative explanation Kayva Joshi .

  • @bhupeshimself
    @bhupeshimself 4 роки тому

    I have just started playing with channel. Thanks for this talk 👍

  • @gokukakarot6323
    @gokukakarot6323 4 роки тому

    there is a 1 element lifo as well for performance benefits

  • @twihc294
    @twihc294 Рік тому

    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

  • @meetalodariya5972
    @meetalodariya5972 2 роки тому

    Great explanation of channel mechanics!

  • @saravanansaibaba8374
    @saravanansaibaba8374 2 роки тому

    Brilliant talk. Learnt a lot.

  • @tushargupta3236
    @tushargupta3236 Рік тому

    Loved this!

  • @kkmingming
    @kkmingming 5 років тому

    Quite an interesting intro to the channel mechanism.

  • @robgreen13
    @robgreen13 5 років тому

    Excellent material and presentation, thanks you.

  • @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?

  • @SteveWang92
    @SteveWang92 2 роки тому

    It is helpful to me extremely

  • @kennethcarvalho3684
    @kennethcarvalho3684 2 роки тому

    Kavya has become a synonym for Channel

  • @prydt
    @prydt 2 роки тому

    awesome and simple talk!

  • @TechEdith
    @TechEdith 4 роки тому

    Great Talk!! Thank you for such an insight into Go Channels

  • @fcamel
    @fcamel 5 років тому

    Great talk! This topic is interesting and useful!!

  • @hyrdeshgangwar
    @hyrdeshgangwar 4 роки тому

    Great talk! One of the best!

  • @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.

  • @bobx7711
    @bobx7711 2 роки тому

    Does anyone know where can I get the slides?

  •  2 роки тому

    Rob Pike and Kavya Joshi do best go talks. Change my mind.

  • @iammen7
    @iammen7 5 років тому

    Great talk! Thanks, Kavya Joshi!

  • @zaofei6281
    @zaofei6281 5 років тому

    Excellent , i know the channel a lot that i ever have

  • @evansonmwangi71
    @evansonmwangi71 5 років тому

    Wish she had written a book..Or is there such a book about internals of Go concurrency primitives.

    • @inancgumus4125
      @inancgumus4125 5 років тому

      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.

  • @chiranjibghorai6950
    @chiranjibghorai6950 5 років тому

    Great talk, I finally understand GO Channels :)

  • @dksingh04
    @dksingh04 6 років тому

    Great talk, got the clear understanding of channels now. Must watch for other gophers.

  • @pfryscak
    @pfryscak 7 років тому

    Really enjoyed this explanation; thanks!

  • @pirminschneider7106
    @pirminschneider7106 7 років тому +7

    I'm always wondering what sort of people downvote a video like this.

  • @pengdu7751
    @pengdu7751 4 роки тому

    great presentation!

  • @gauravsharma1455
    @gauravsharma1455 5 років тому

    Really awesome talk

  • @romankonovalov2588
    @romankonovalov2588 Рік тому

    just the best

  • @shuaiyang105
    @shuaiyang105 2 роки тому

    where is the pre?

  • @seriyanto
    @seriyanto 4 роки тому

    really amazing talk !

  • @sergioontech
    @sergioontech 6 років тому +1

    Great talk! Thank you so much!

  • @brister61
    @brister61 5 років тому

    Excellent talk.

  • @tommytin6978
    @tommytin6978 3 роки тому

    Many thanks!

  • @CriticalThinkerShan
    @CriticalThinkerShan Рік тому

    awesome

  • @cholocatelabs
    @cholocatelabs 4 роки тому

    Great talk

  • @zakariachahboun
    @zakariachahboun 2 роки тому

    Cool thanks 👏

  • @garywzh
    @garywzh 7 років тому +7

    cool

    • @Makos1996
      @Makos1996 7 років тому

      yup, this is pretty cool

  • @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

  • @remariorichards8237
    @remariorichards8237 7 років тому

    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.

  • @asn90436
    @asn90436 5 років тому

    Great talk, thank you so much

  • @florenckaf
    @florenckaf 2 роки тому

    The style is a bit too cheesy but the contents is very interesting.

  • @TheRoxas13th
    @TheRoxas13th 6 років тому +1

    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 років тому +4

      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) :)

  • @mubiale4060
    @mubiale4060 4 роки тому

    Thanks, so clear

  • @白孟博
    @白孟博 6 років тому

    Great talk!

  • @jiaxichen9373
    @jiaxichen9373 7 років тому

    It is a great talk! Thanks!

  • @RodolfoBarriga
    @RodolfoBarriga 7 років тому

    great talk ....

  • @praveenkumar4951
    @praveenkumar4951 7 років тому +1

    At ua-cam.com/video/KBZlN0izeiY/v-deo.html right hand side func worker(ch) should have *task :=

  • @chaoleili9339
    @chaoleili9339 5 років тому

    Great!

  • @danielsokil9529
    @danielsokil9529 6 років тому

    so a unbuffered goroutine can create unlimited tasks in the channel?

  • @RR-ly4vy
    @RR-ly4vy 4 роки тому

    Ok. That go routine modifies stack of the other, for performance to do the trick.
    .
    .
    .
    .
    .
    .
    .
    .
    (searches how to learn rust faster)

  • @sonicgoogle
    @sonicgoogle 2 роки тому

    gdd

  • @twistedlog24
    @twistedlog24 6 років тому

    This is such an amazing talk/

  • @andreypanin2136
    @andreypanin2136 2 роки тому

    Why does she sound so aggressive?

  • @dardanbekteshi3177
    @dardanbekteshi3177 Рік тому

    Fantastic talk

  • @Padeir0
    @Padeir0 4 роки тому

    Great talk!

  • @codephilosopher
    @codephilosopher 3 роки тому

    Great talk!

  • @gaby1491
    @gaby1491 2 роки тому

    great talk!