首頁>Club>
13
回覆列表
  • 1 # 瑾說程式設計

    Go的非同步主要是由協程(goroutine)實現的。協程相對於執行緒來說,佔用的記憶體更少,更輕量級,這也是Go在效能上的優勢。

    非同步是相對於同步來說的,下面透過程式碼的執行順序說明一下。

    1.同步是按照順序執行的。

    上面的程式碼會輸出:

    第一步

    第二步

    第三步

    2.非同步在執行時,不是順序執行的,非同步程式碼有時會被直接跳過。

    上面的程式碼會輸出:

    第一步

    第三步

    要讓上面的非同步程式碼都執行,可以這樣修改一下:

    在第九行,新增

    time.Sleep

    方法,字面意思是先睡1s,實際上是Go的排程程式,先暫停執行當前的協程(即main)一秒鐘,在這個時間內排程程式會搜尋看一下,是否有其他的協程未執行,如果有,會先執行它。在它執行完之後,再回到之前的協程,繼續執行下去。所以最後會輸出:

    第一步

    第三步

    第二步

    以上是我的一些理解,希望可以幫到你。

  • 中秋節和大豐收的關聯?
  • 20天寶寶嘴巴里有痰咳嗽是怎麼了?寶寶是母乳餵養,如何護理好一些呢?