Untitled
unknown
golang
a year ago
857 B
23
Indexable
package main import ( "fmt" "sync" "time" ) func worker(id int, wg *sync.WaitGroup, jobs <-chan int, results chan<- int) { defer wg.Done() for j := range jobs { fmt.Printf("Worker %d started job %d\n", id, j) time.Sleep(time.Second) // Simulate a time-consuming job fmt.Printf("Worker %d finished job %d\n", id, j) results <- j * 2 } } func main() { const numWorkers = 3 const numJobs = 5 jobs := make(chan int, numJobs) results := make(chan int, numJobs) var wg sync.WaitGroup for w := 1; w <= numWorkers; w++ { wg.Add(1) go worker(w, &wg, jobs, results) } for j := 1; j <= numJobs; j++ { jobs <- j } close(jobs) wg.Wait() close(results) for result := range results { fmt.Println("Result:", result) } }
Editor is loading...
Leave a Comment