English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Goroutine - это функция или метод, который может выполняться независимо и параллельно с любыми другими Goroutine в программе. Иными словами, каждая активность, выполняемая одновременно в Go, называется Goroutine. В Go вам разрешается создавать несколько goroutine в одной программе. Вы можете создать goroutine, добавив перед вызовом функции или метода ключевое слово go, как показано в следующей синтаксисе:
func name(){ // оператор } //создание goroutine с помощью ключевого слова go go name()
Теперь, используя пример, рассмотрим, как создавать и использовать несколько goroutine:
package main import ( "fmt" "time" ) //goroutine 1 func Aname() { arr1 := [4]string{"Rohit", "Suman", "Aman", "Ria"} for t1 := 0; t1 <= 3; t1++ { time.Sleep(150 * time.Millisecond) fmt.Printf("%s\n", arr1[t1]) } } // goroutine 2 func Aid() { arr2 := [4]int{300, 301, 302, 303} for t2 := 0; t2 <= 3; t2++ { time.Sleep(500 * time.Millisecond) fmt.Printf("%d\n", arr2[t2]) } } func main() { fmt.Println("!...Основной Go-routine начал...!") // вызов Goroutine 1 go Aname() // вызов Goroutine 2 go Aid() time.Sleep(3500 * time.Millisecond) fmt.Println("\n!...Основной Go-routine завершен...!") }
вывод:
!...Основной Go-routine начал...! Rohit Suman Aman 300 Ria 301 302 303 !...Основной Go-routine завершен...!
создание:в предыдущем примере, кроме основного goroutine, у нас также есть два goroutine, то естьAnameиAid. Здесь,Anameвывод имени автора,Aidвывод идентификатора автора.
работа:здесь у нас есть два goroutine, то естьAnameиAid,а также один основной goroutine. Когда мы впервые запускаем этот программу, основной goroutine分层 и выводит “!...Основной Go-routine начал...!” Здесь основной goroutine подобен родительскому goroutine, а другие goroutine являются его подпроцессами, поэтому сначала запускается основной goroutine, а затем другие goroutine. Если основной goroutine завершается, то и другие goroutine также завершаются. Поэтому, после основного goroutine,AnameиAid goroutine одновременно начнут работать. Aname goroutine начнет работу с 150ms, а Aid с 500ms.