溫馨提示×

Go語言定時器能處理多個任務嗎

小樊
82
2024-11-02 17:04:30
欄目: 編程語言

是的,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)建了兩個定時器timer1timer2,分別每隔1秒和2秒觸發(fā)一次。然后我們使用兩個goroutine并發(fā)執(zhí)行task1task2。當定時器觸發(fā)時,對應的goroutine會被喚醒并執(zhí)行任務。最后,我們等待所有goroutine完成。

0