日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(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秒往隊(duì)列寫數(shù)據(jù)
    gtimer.SetInterval(time.Second, func() {
        v := gtime.Now().String()
        q.Push(v)
        fmt.Println("Push:", v)
    })

    // 3秒后關(guān)閉隊(duì)列
    gtimer.SetTimeout(3*time.Second, func() {
        q.Close()
    })

    // 消費(fèi)者,不停讀取隊(duì)列數(shù)據(jù)并輸出到終端
	// 如果隊(duì)列中沒有數(shù)據(jù),則會(huì)阻塞
	// 可以結(jié)合select語法進(jìn)行使用
	// 例子
	// 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秒時(shí)關(guān)閉隊(duì)列,這時(shí)程序立即退出,因此結(jié)果中只會(huì)打印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
}

元素入隊(duì)/出隊(duì)

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 
}

隊(duì)列長(zhǎ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()

	q.Push(1)
	q.Push(2)

	fmt.Println(q.Len())
	// size是len方法的別稱
	fmt.Println(q.Size())

	// May Output:
	// 2
	// 2
}

隊(duì)列關(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?鏈表實(shí)現(xiàn)動(dòng)態(tài)大小特性,在隊(duì)列滿或者在隊(duì)列空時(shí)讀取數(shù)據(jù)會(huì)產(chǎn)生阻塞。

創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元新化做網(wǎng)站,已為上家服務(wù),為新化各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

?glist?是一個(gè)并發(fā)安全的鏈表,并可以允許在關(guān)閉并發(fā)安全特性的時(shí)和一個(gè)普通的list鏈表無異,在存儲(chǔ)和讀取數(shù)據(jù)時(shí)不會(huì)發(fā)生阻塞。


文章名稱:創(chuàng)新互聯(lián)GoFrame教程:GoFrame gqueue-基本使用
本文地址:http://www.5511xx.com/article/cosggpd.html