Upgrade to Pro — share decks privately, control downloads, hide ads and more …

goroutineの仕組みについて

8a7565390ac27bd4a05e7d563134e250?s=47 sivchari
November 13, 2021
1.1k

 goroutineの仕組みについて

Go Conference 2021 Autumnで発表した資料です

8a7565390ac27bd4a05e7d563134e250?s=128

sivchari

November 13, 2021
Tweet

Transcript

  1. goroutineͷ࢓૊Έʹ͍ͭͯ ~Go Conference 2021 Autumn~ 

  2. w 5BLVNB4IJCVZB!TJWDIBSJ w ଔ$ZCFS"HFOU ༧ఆ  w όοΫΤϯυΤϯδχΞ w MJOUFS

    044͕޷͖  ࣗݾ঺հ
  3. w (PͷSVOUJNFΛࢧ͑Δཁૉ w HPSPVUJOFͷϥΠϑλΠϜ w HPSPVUJOFͷεέδϡʔϦϯά  ࿩͢͜ͱ

  4. ~Let's Go~ 

  5. ~GoͷruntimeΛࢧ͑Δཁૉ~ 

  6. w (HPSPVUJOF w .ϚγϯεϨου w 1HPSPVUJOFΛ࣮ߦ͢ΔϦιʔε w TDIFEάϩʔόϧͰϢχʔΫɺશͯͷ1Ͱڞ༗͞ΕΔ  ొ৔ਓ෺

  7.  શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (

    ( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
  8.  શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (

    ( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
  9. w NH ( Λ࣮ߦ͍ͯ͠ΔN .  w TDIFE1$ͳͲͷ஋Λอ࣋͢ΔελοΫ w BUPNJDTUBUVTHPSPVUJOFͷঢ়ଶ

    ͭ  w HPQDHPSPVUJOFΛੜ੒ͨ͠HPͷ1$ w TUBSUQDHPSPVUJOFͷ1$  G
  10.  શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (

    ( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
  11. w HεέδϡʔϥʔͷͨΊͷHPSPVUJOF w DVSHݱࡏ࣮ߦ͍ͯ͠ΔHPSPVUJOF w Q(PͷίʔυΛ࣮ߦ͢ΔͨΊʹඥͮ͘Q 1  M

  12.  શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (

    ( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
  13. w NQ 1 ʹඥͮ͘N .  w SVOR1͝ͱʹอ࣋͢ΔH ( ͷMPDBMRVFVF

    w HGSFF࣮ߦ͍ͯ͠ͳ͍ར༻ՄೳͳH (  P
  14.  શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (

    ( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
  15. w NJEMFJEMFͷN . Λอ࣋ w QJEMFJEMFͷQ 1 Λอ࣋ w SVOR

    H ( Λอ࣋͢ΔHMPCBMRVFVF  sched
  16. ~goroutineͷϥΠϑλΠϜ~ 

  17.  αϯϓϧίʔυ

  18.  newproc . 1 ( SVOR $SFBUFHPSPVUJOF

  19.  newproc1 ( . 1 ( SVOR

  20.  newproc ( . 1 ( SVOR

  21.  runqput ( . 1 ( SVOR (

  22.  runqputslow TDIFE . 1 ( SVOR (

  23.  globruqputbatch TDIFE . 1 ( SVOR ( (

  24. ~goroutineͷεέδϡʔϦϯά~ 

  25.  schedule TDIFE . 1 ( SVOR (

  26.  globrunqget TDIFE ( . 1 ( SVOR (

  27.  schedule . 1 ( SVOR (

  28.  runqget ( . 1 ( SVOR (

  29.  schedule . 1 ( SVOR

  30.  fi ndrunnable ( *0 ❌ @(XBJUJOH@(SVOOBCMF ( . 1

    ( SVOR
  31.  1 . ( SVOR 1 . ( SVOR (

    ( ( ( ( ( fi ndrunnable
  32.  stealWork/runqsteal 1 . ( SVOR 1 ( SVOR (

    ( ( ( ( ( ( ( ( .
  33.  execute ( . 1 ( SVOR

  34.  goexit ( . 1 ( SVOR

  35.  goexit1 ( . 1 ( SVOR

  36.  mcall ( . 1 ( SVOR

  37.  UPHGSFF goexit0 ( . 1 ( SVOR

  38.  αϯϓϧίʔυ IUUQTQMBZHPMBOHPSHQX81SL$YO)G

  39. w (P͸ಠࣗͷεέδϡʔϥʔͰHPSPVUJOFΛ੍ޚ͍ͯ͠Δ w ֤1͕SVORΛ࣋ͭ͜ͱͰϓϩάϥϜͷޮ཰͕ߴ·Δ w ෳࡶͳ࣮૷ͷ͓͔͛Ͱ؆୯ʹฒߦॲཧΛ࣮૷Ͱ͖Δ  ·ͱΊ

  40. ~Tank you for watching~