亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

建平县| 奎屯市| 介休市| 嫩江县| 襄城县| 娄烦县| 重庆市| 安陆市| 镇远县| 灯塔市| 郓城县| 安多县| 邮箱| 东阿县| 玉溪市| 房产| 赞皇县| 温州市| 双鸭山市| 尉氏县| 枞阳县| 商城县| 呼伦贝尔市| 芮城县| 宜兰县| 沐川县| 凤城市| 萨嘎县| 永丰县| 九龙城区| 临颍县| 若羌县| 双城市| 渭源县| 阜南县| 龙里县| 博客| 瓦房店市| 乐陵市| 尼玛县| 申扎县|