Golang中的channel和mutex是用于并發(fā)編程的兩個重要工具。下面分別介紹它們的使用方法。
ch := make(chan int)
<-
操作符將數(shù)據(jù)發(fā)送到channel。例如:ch <- 10
<-
操作符從channel接收數(shù)據(jù)。例如:x := <-ch
close
函數(shù)關(guān)閉channel。例如:close(ch)
select
語句來實現(xiàn)非阻塞的操作。例如:select {
case x := <-ch:
// 接收到數(shù)據(jù)
case ch <- 10:
// 發(fā)送數(shù)據(jù)成功
default:
// 沒有數(shù)據(jù)可接收或發(fā)送
}
sync
包中的Mutex
類型來創(chuàng)建mutex。例如:var mu sync.Mutex
Lock
方法來加鎖,使用Unlock
方法來解鎖。例如:mu.Lock()
// 臨界區(qū)代碼
mu.Unlock()
需要注意的是,channel和mutex是用于不同的并發(fā)場景。channel主要用于goroutine之間的通信,而mutex主要用于保護(hù)共享資源的訪問。在使用它們時,需要根據(jù)具體的需求選擇合適的工具。