github.com/gogf/gf@v1.16.9/.example/container/gqueue/gqueue.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"time"
     6  
     7  	"github.com/gogf/gf/container/gqueue"
     8  	"github.com/gogf/gf/os/gtime"
     9  	"github.com/gogf/gf/os/gtimer"
    10  )
    11  
    12  func main() {
    13  	q := gqueue.New()
    14  	// 数据生产者,每隔1秒往队列写数据
    15  	gtimer.SetInterval(time.Second, func() {
    16  		v := gtime.Now().String()
    17  		q.Push(v)
    18  		fmt.Println("Push:", v)
    19  	})
    20  
    21  	// 3秒后关闭队列
    22  	gtimer.SetTimeout(3*time.Second, func() {
    23  		q.Close()
    24  	})
    25  
    26  	// 消费者,不停读取队列数据并输出到终端
    27  	for {
    28  		if v := q.Pop(); v != nil {
    29  			fmt.Println(" Pop:", v)
    30  		} else {
    31  			break
    32  		}
    33  	}
    34  }