首頁 >後端開發 >Golang >golang 管道線程安全嗎

golang 管道線程安全嗎

(*-*)浩
(*-*)浩原創
2019-12-30 14:48:505971瀏覽

golang 管道線程安全嗎

如果把線程安全地定義為允許多個goroutine同時去讀寫,那麼golang 的channel 是線程安全的。不需要在並發讀寫同一個channe時加鎖。

golang中的channel                                   )

channel用於goroutine之間的通訊

如果不用channel,使用共享全域變數的方式,需要加鎖

// synchornized 同步
// golang中的 sync包中有互斥锁 
var lock sync.Mutex  // mutex 互斥
lock.Lock() // 上锁
// 多个goroutine同时对相同的数据进行修改
lock.Unlock() // 解锁
使用同步鎖定效率會很低

channel主要用於goroutine通訊和解決主執行緒等待goroutine執行結束再退出的問題

basic concept of channel

本質上是一個FIFO的資料結構-佇列

線程安全,不需要加鎖

channel是有類型的,如字串channel chan string,只能保存string資料

以上是golang 管道線程安全嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn