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