是的,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完成。