是的,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) }
在这个示例中,我们创建了两个定时器timer1
和timer2
,分别每隔1秒和2秒触发一次。然后我们使用两个goroutine并发执行task1
和task2
。当定时器触发时,对应的goroutine会被唤醒并执行任务。最后,我们等待所有goroutine完成。