golang并发(同步)多任务高性能执行&聚合
package main
import (
"fmt"
"sync"
)
// 假设的任务接口
type Task interface {
Run() error
}
// 任务执行器
func ExecuteTasks(tasks []Task) {
var wg sync.WaitGroup
wg.Add(len(tasks))
for _, task := range tasks {
go func(t Task) {
defer wg.Done()
if err := t.Run(); err != nil {
fmt.Printf("Task failed with error: %v\n", err)
}
}(task)
}
wg.Wait()
}
// 示例任务
type SampleTask struct {
id int
name string
}
func (t *SampleTask) Run() error {
fmt.Printf("Task %d: %s is running.\n", t.id, t.name)
// 模拟任务执行
// time.Sleep(time.Second)
return nil
}
func main() {
tasks := []Task{
&SampleTask{id: 1, name: "Task 1"},
&SampleTask{id: 2, name: "Task 2"},
&SampleTask{id: 3, name: "Task 3"},
}
ExecuteTasks(tasks)
}
这个代码示例展示了如何在Go语言中使用sync.WaitGroup
来实现并发地执行一组任务。每个任务实现了Task
接口的Run
方法,并在ExecuteTasks
函数中并发执行。这样可以充分利用多核处理器的优势,提高任务执行的并发度和系统的吞吐量。
评论已关闭