温馨提示×

Go语言定时器能处理多个任务吗

小樊
81
2024-11-02 17:04:30
栏目: 编程语言

是的,Go语言的定时器可以处理多个任务。Go标准库中的time包提供了Timer类型,可以用来创建定时器。你可以为每个任务创建一个定时器,并在定时器的C通道上接收时间信号。当定时器触发时,你可以在对应的goroutine中执行任务。

下面是一个简单的示例,展示了如何使用Go语言的定时器处理多个任务:

package main

import (
	"fmt"
	"time"
)

func task1() {
	fmt.Println("Task 1 executed at", time.Now())
}

func task2() {
	fmt.Println("Task 2 executed at", time.Now())
}

func main() {
	// 创建一个定时器,每隔1秒触发一次
	timer1 := time.NewTimer(1 * time.Second)

	// 创建另一个定时器,每隔2秒触发一次
	timer2 := time.NewTimer(2 * time.Second)

	// 使用goroutine并发执行任务
	go func() {
		<-timer1.C
		task1()
	}()

	go func() {
		<-timer2.C
		task2()
	}()

	// 等待所有goroutine完成
	time.Sleep(5 * time.Second)
}

在这个示例中,我们创建了两个定时器timer1timer2,分别每隔1秒和2秒触发一次。然后我们使用两个goroutine并发执行task1task2。当定时器触发时,对应的goroutine会被唤醒并执行任务。最后,我们等待所有goroutine完成。

0