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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                > ### goroutine * 系統級的線程(系統自動創建和銷毀), 用戶級的協程(Go調度器管理) * M線程 P介質(協程運行在線程上) * 創建線程消耗幾M內存, 協程幾Kb * go 關鍵字用來創建 goroutine (協程),是實現并發(一個咖啡機, 兩個隊伍)的關鍵 * 搶占不了死循環,死循環沒有調度點 ![](/D:/%E6%AD%A3%E5%BC%8F%E6%A1%8C%E9%9D%A2/Golang%E5%B7%A5%E4%BD%9C%E7%AC%94%E8%AE%B0/book/Golang%E5%B7%A5%E4%BD%9C%E7%AC%94%E8%AE%B0/images/in-motion.jpg) * go關鍵字只是創建協程并加入調度隊列,協程并沒有立刻調度(由于這個原因,調度的時機和順序是未知的) ~~~ package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup wg.Add(2) go func() { time.Sleep(2 * time.Second) fmt.Println("1號完成") wg.Done() }() go func() { time.Sleep(2 * time.Second) fmt.Println("2號完成") wg.Done() }() wg.Wait() fmt.Println("好了,大家都干完了,放工") } ~~~ > ### 調度問題 ~~~ package main import ( "fmt" "time" "runtime" ) func main() { runtime.GOMAXPROCS(1) for i := 0; i < 10; i++ { go func(i int) { fmt.Printf("%c\n", 'a'+i) runtime.Gosched() }(i) go func(i int) { fmt.Printf("%c\n", 'A'+i) }(i) } time.Sleep(time.Second) } ~~~ > ### 并發和并行 * 兩個隊列,一個Coffee機器,那是并發 * 兩個隊列,兩個Coffee機器,那是并行 ![](/D:/%E6%AD%A3%E5%BC%8F%E6%A1%8C%E9%9D%A2/Golang%E5%B7%A5%E4%BD%9C%E7%AC%94%E8%AE%B0/book/Golang%E5%B7%A5%E4%BD%9C%E7%AC%94%E8%AE%B0/images/252154376071443.jpg) > ### 相關閱讀 * [Go Channel 應用模式](http://colobu.com/2018/03/26/channel-patterns/) * [golang 的channels 行為](https://segmentfault.com/a/1190000014524388) * [Go語言并發與并行學習筆記(一)](http://blog.csdn.net/kjfcpua/article/details/18265441) * [Go語言并發與并行學習筆記(二)](http://blog.csdn.net/kjfcpua/article/details/18265461) * [Go語言并發與并行學習筆記(三)](http://blog.csdn.net/kjfcpua/article/details/18265475) * [Go 語言 select 語句](http://www.runoob.com/go/go-select-statement.html) * [Go并發編程—select的使用](https://blog.csdn.net/zg_hover/article/details/81453379)
                  <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>

                              哎呀哎呀视频在线观看