是的,Go語言的定時器可以處理多個任務。Go標準庫中的time
包提供了Timer
類型,可以用來創(chuàng)建定時器。你可以為每個任務創(chuàng)建一個定時器,并在定時器的C
通道上接收時間信號。當定時器觸發(fā)時,你可以在對應的goroutine中執(zhí)行任務。
下面是一個簡單的示例,展示了如何使用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() {
// 創(chuàng)建一個定時器,每隔1秒觸發(fā)一次
timer1 := time.NewTimer(1 * time.Second)
// 創(chuàng)建另一個定時器,每隔2秒觸發(fā)一次
timer2 := time.NewTimer(2 * time.Second)
// 使用goroutine并發(fā)執(zhí)行任務
go func() {
<-timer1.C
task1()
}()
go func() {
<-timer2.C
task2()
}()
// 等待所有goroutine完成
time.Sleep(5 * time.Second)
}
在這個示例中,我們創(chuàng)建了兩個定時器timer1
和timer2
,分別每隔1秒和2秒觸發(fā)一次。然后我們使用兩個goroutine并發(fā)執(zhí)行task1
和task2
。當定時器觸發(fā)時,對應的goroutine會被喚醒并執(zhí)行任務。最后,我們等待所有goroutine完成。