掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
package main
import (
"fmt"
"time"
"github.com/GOgf/gf/v2/os/gtimer"
"github.com/gogf/gf/v2/container/gqueue"
)
func main() {
q := gqueue.New()
// 數(shù)據(jù)生產(chǎn)者,每隔1秒往隊列寫數(shù)據(jù)
gtimer.SetInterval(time.Second, func() {
v := gtime.Now().String()
q.Push(v)
fmt.Println("Push:", v)
})
// 3秒后關(guān)閉隊列
gtimer.SetTimeout(3*time.Second, func() {
q.Close()
})
// 消費者,不停讀取隊列數(shù)據(jù)并輸出到終端
// 如果隊列中沒有數(shù)據(jù),則會阻塞
// 可以結(jié)合select語法進行使用
// 例子
// for {
// select {
// case v := <-queue.C:
// if v != nil {
// fmt.Println(v)
// } else {
// return
// }
// }
// }
for {
if v := q.Pop(); v != nil {
fmt.Println(" Pop:", v)
} else {
break
}
}
// 第3秒時關(guān)閉隊列,這時程序立即退出,因此結(jié)果中只會打印2秒的數(shù)據(jù)。 執(zhí)行后,輸出結(jié)果為:
// Output:
// Push: 2021-09-07 14:03:00
// Pop: 2021-09-07 14:03:00
// Push: 2021-09-07 14:03:01
// Pop: 2021-09-07 14:03:01
}package main
import (
"fmt"
"time"
"github.com/gogf/gf/v2/os/gtimer"
"github.com/gogf/gf/v2/container/gqueue"
)
func main() {
q := gqueue.New()
for i := 0; i < 10; i++ {
q.Push(i)
}
fmt.Println(q.Pop())
fmt.Println(q.Pop())
fmt.Println(q.Pop())
// Output:
// 0
// 1
// 2
}package main
import (
"fmt"
"time"
"github.com/gogf/gf/v2/os/gtimer"
"github.com/gogf/gf/v2/container/gqueue"
)
func main() {
q := gqueue.New()
q.Push(1)
q.Push(2)
fmt.Println(q.Len())
// size是len方法的別稱
fmt.Println(q.Size())
// May Output:
// 2
// 2
}package main
import (
"fmt"
"time"
"github.com/gogf/gf/v2/os/gtimer"
"github.com/gogf/gf/v2/container/gqueue"
)
func main() {
q := gqueue.New()
for i := 0; i < 10; i++ {
q.Push(i)
}
fmt.Println(q.Pop())
q.Close()
fmt.Println(q.Pop())
fmt.Println(q.Len())
// Output:
// 0
//
// 0
} ?gqueue?的底層基于?glist?鏈表實現(xiàn)動態(tài)大小特性,在隊列滿或者在隊列空時讀取數(shù)據(jù)會產(chǎn)生阻塞。

創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新化做網(wǎng)站,已為上家服務(wù),為新化各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
?glist?是一個并發(fā)安全的鏈表,并可以允許在關(guān)閉并發(fā)安全特性的時和一個普通的list鏈表無異,在存儲和讀取數(shù)據(jù)時不會發(fā)生阻塞。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流