av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)GoFrame教程:GoFrame gqueue-基本使用

基本使用

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
}

隊列關(guān)閉

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

?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ā)生阻塞。


網(wǎng)站欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame gqueue-基本使用
本文鏈接:http://uogjgqi.cn/article/cosggpd.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流