91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中Once如何使用

發布時間:2021-08-13 16:14:45 來源:億速云 閱讀:133 作者:Leah 欄目:數據庫

Go語言中Once如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

sync.Once是sync包中的一個對象,它只有一個方法Do,這個方法很特殊,在程序運行過程中,無論被多少次調用,只會執行一次。

1.適用場景:

在一個進程之中,如果一個函數里面的一部分代碼,希望在很多協程都執行的時候,只被執行一次,那么Once便起到了作用。例如:初始化進程中的共享內存,它只希望被該進程初始化一次,其他協程不需要初始化操作。

例子:

結果分析:

從上面的輸出結果可以看出,使用了once.Do之后,onceBody()函數中的代碼只被調用了一次。其他的協程依然還在運行,但是并沒有去執行onceBody()函數中的代碼。

2. 源碼如下所示:

Once的數據結構和函數實現如下所示:

備注:巧妙之處,doSlow函數中,計數器done的自增操作是寫到了defer函數中,原因就是defer中的函數就算在panic的時候,也會被執行,這樣就可以有效的避免panic的時候,Do函數的計數器失效,導致其他的協程會在調用一次f()中的代碼。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安远县| 巧家县| 荆门市| 若羌县| 霞浦县| 壶关县| 永寿县| 潢川县| 凤台县| 石泉县| 莱西市| 广安市| 南投县| 莆田市| 平舆县| 富源县| 双柏县| 嘉义市| 凉山| 台湾省| 东乡| 贵州省| 潮安县| 兴仁县| 蓝田县| 郴州市| 荥阳市| 宁安市| 吉隆县| 婺源县| 泊头市| 广安市| 柏乡县| 兴文县| 泰来县| 大竹县| 屯门区| 建瓯市| 佛冈县| 新沂市| 洞口县|