Как прервать запущенные горутины GOLANG?

Канал — это объект соединения,  которым горутины обмениваются данными.
пример создания канала:

package main

import "fmt"

func main() {
    var c chan int
    fmt.Println(c)
} 


В Каналах существует операция закрытия, которая закрывает канал, так что операция отправки на канале не может выполняться. Через закрытый канал невозможно передать или принять какие- либо данные.

Когда на канале выполняется операция приема, мы проверяем, закрыт ли канал или нет, и выходим из горутины, если канал закрыт.

package main

import (
	"fmt"
	"sync"
)

func main() {
	var wg sync.WaitGroup
	wg.Add(1)

	ch := make(chan string)
	go func() {
		for {
			channel, ok := <-ch
			if !ok {
				fmt.Println("Shut Down")
				defer wg.Done()
				return
			}
			fmt.Println(channel)
		}
	}()
	ch <- "Start"
	ch <- "Processing"
	ch <- "Finishing"
	close(ch)

	wg.Wait()
}

Вывод программы Go:

C:\Golang\goroutines>go run main.go
Start
Processing
Finishing
Shut Down
+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *