type mutex struct
案例1.用普通鎖來實現火車站賣票
// mymutexdes project main.go
package main
import (
"fmt"
"sync"
"time"
)//全域性變數
var ticks = 100
var wg sync.waitgroup
var mutex sync.mutex
func saletickets(name string, wg *sync.waitgroup) else
mutex.unlock()
} wg.done() //通知計數器減一
}func main()
效果如下:
圖(1)用mutex模擬火車站賣票
type rwmutex struct
案例2. 主線程加鎖、解鎖子協程
// mymutexwrite project main.go
package main
import (
"fmt"
"sync"
"time"
)func main() (i)
} time.sleep(1 * time.second)
fmt.println("main 嘗試寫鎖定...")
rwm.lock()
fmt.println("main 已經寫鎖定了...")
rwm.unlock()
fmt.printf("main 寫解鎖...")
}
效果如下:
圖(2) 主線程加鎖、解鎖子協程
go語言中的鎖
雖然提供了channel來保證協程中的通訊,在某些情況下,還是更適合使用鎖來保證執行緒的安全.go語言中的鎖分兩種 互斥鎖mutex和讀寫鎖rwmutex 1.互斥鎖 mutex 互斥鎖是執行緒安全中最常用的鎖,基本原理就是對某個操作進行加鎖,無論讀寫同一時間內只有乙個協程可以對當前資料進行操作,只...
Go語言中普通函式與方法的區別分析
1.對於普通函式,接收者為值型別時,不能將指標型別的資料直接傳遞,反之亦然。2.對於方法 如struct的方法 接收者為值型別時,可以直接用指標型別的變數呼叫方法,反過來同樣也可以。以下為簡程式設計客棧單示例 複製 如下 package structtest 普通函式與方法的區別 在接收者分別為值型...
GO語言中的常量和GO的 列舉
常量是乙個簡單值的識別符號,一旦定義不能改變,常量中的值只能是布林,數字型 整數型 浮點型和複數 和字串型。go語言常量中不要全部大寫,因為go語言中的大小寫是有含義的,比如首字母大寫代表public 常量的定義 1 顯式型別 const 常量名 型別 值 const path string www...