<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 簡介 出現死鎖的情況 * 單go協程自己死鎖 * go協程之間channel訪問順序導致死鎖 * 多go協程,多channel交叉死鎖 盡量不要將讀寫鎖和互斥鎖和channel混用,有可能造成隱式死鎖,還不報錯 # 單go協程自己死鎖 channel至少在2個協程中進行 ~~~ func main() { s:= make(chan int) //寫入channel,寫端阻塞,阻塞當前,下面就全部阻塞了,就沒機會執行了 s<-11 //他能解鎖,但是已經被阻塞了 m := <-s fmt.Println(m) } ~~~ 輸出 ~~~ fatal error: all goroutines are asleep - deadlock! ~~~ # go協程之間channel訪問順序導致死鎖 使用一端寫的時候,保證另一端有機會讀取,代碼寫下面 ~~~ func main() { ch:= make(chan int) //讀取,阻塞,阻塞了下面就不執行了,除非把他放在go func的下面 m := <-ch fmt.Println(m) go func() { //他能解鎖,但是主程序在之前就阻塞了 ch <- 11 }() } ~~~ # 多go協程,多channel交叉死鎖 ~~~ func main() { ch1 := make(chan int) ch2 := make(chan int) go func() { //子 for { select { //讀操作阻塞 case num := <-ch1: //寫 ch2 <- num } } }() for { //主 select { //讀 case num := <-ch2: //寫 ch1 <- num } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看