クイック スタート: Go 言語関数を使用して単純なタスク キュー関数を実装する
はじめに:
現代のソフトウェア開発では、タスク キュー (タスク キュー) は非常に一般的な概念であり、複数の問題を解決するために使用されます。タスクの同時実行の要件。タスク キューは、タスクの非同期処理を実装し、システムの応答速度と同時実行機能を向上させるのに役立ちます。この記事では、Go 言語関数を使用して簡単なタスク キューを実装し、すぐに開始できるようにする方法を紹介します。
まず、タスクを表す構造体を定義します:
type Task struct { ID int Func func() error } // NewTask 创建一个新的任务 func NewTask(id int, f func() error) *Task { return &Task{ ID: id, Func: f, } }
次に、タスク キューの構造体を定義する必要があります:
type TaskQueue struct { queue chan *Task }
Next、タスクの追加、タスクの実行など、いくつかの一般的なメソッドをタスク キューに追加できます。
// Push 将任务添加到队列中 func (tq *TaskQueue) Push(task *Task) { tq.queue <- task } // Execute 从队列中取出任务并执行 func (tq *TaskQueue) Execute() { for task := range tq.queue { if err := task.Func(); err != nil { fmt.Printf("Task %d failed: %s ", task.ID, err.Error()) } } }
最後に、タスク キューを使用してタスクを作成および実行できます。
func main() { // 创建任务队列 tq := TaskQueue{ queue: make(chan *Task), } // 启动并发的任务执行 go tq.Execute() // 添加任务到队列中 for i := 0; i < 10; i++ { id := i task := NewTask(id, func() error { time.Sleep(time.Second) fmt.Printf("Task %d executed ", id) return nil }) tq.Push(task) } // 等待所有任务执行完成 time.Sleep(11 * time.Second) }
上記のサンプル コードでは、タスク キューを作成し、Push
メソッドを呼び出してタスクをキューに追加します。次に、Execute
メソッドで、キューからタスクを継続的に削除して実行できます。最後に、すべてのタスクが完了するのを待ちます。
以上がクイック スタート: Go 言語関数を使用して単純なタスク キュー関数を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。