GO開發:GIN面試題

GO開發:GIN面試題

有9種狀態_Gidle:剛剛被分配並且還沒有被初始化_Grunnable:沒有執行程式碼,沒有棧的所有權,儲存在執行佇列中_Grunning:可以執行程式碼,擁有棧的所有權,被賦予了核心執行緒 M 和處理器 P_Gsyscall:正在執行系...

2022-11-21
Go 記憶體洩漏

Go 記憶體洩漏

go的53行:阻塞的原因是outCh這個寫操作無法完成,outCh是無緩衝的通道,並且由於以下程式碼是死程式碼,所以goroutine始終沒有從outCh讀資料,造成outCh阻塞,進而造成無數個alloc2的goroutine阻塞,形成記...

2022-03-12
從併發模型看 Go 的語言設計

從併發模型看 Go 的語言設計

經過上面幾個例子的分析中我們可以看出,從併發模型和併發程式設計的角度來看,Go 在語言設計上的優勢在於:擁有輕量的應用層程序 goroutine,允許開發者基於大量 goroutine 來設計併發程式First class channel ...

2021-11-28

如何優雅的使用Goroutine上-Goroutine怎麼洩漏和排查

goroutine 內的邏輯進入超長時間等待(比如呼叫第三方介面、庫、cgo等沒有設定超時控制)1.channel讀寫操作堵塞,由於邏輯問題導致一直堵塞示例1:package mainimport (“fmt”“runtime”“time”...

2021-10-25
goroutine和channel的詳細理解

goroutine和channel的詳細理解

在宣告一個通道的時候,我們給make以第二個引數來指明它的容量(預設為0,即無緩衝):var ch chan int = make(chan int, 2) // 寫入2個元素都不會阻塞當前goroutine, 儲存個數達到2的時候會阻塞如...

2021-09-02