Golang est un langage de programmation développé par Google Son modèle de concurrence est principalement basé sur "goroutine" et "channel". Dans le langage Go, les coroutines sont des threads légers démarrés par l'instruction Go (go). Elles s'exécutent sur une pile distincte et sont planifiées par le runtime Go (goroutine). Par rapport aux threads traditionnels, les coroutines sont plus légères et flexibles, ne nécessitent pas trop de ressources système et peuvent facilement créer des milliers de coroutines pour gérer des tâches simultanées.
Ce qui suit utilise des exemples de code spécifiques pour démontrer l'utilisation des threads et des coroutines ainsi que leurs similitudes et différences :
package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) // 设置CPU核心数为1 var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() for i := 0; i < 10; i++ { fmt.Println("线程1:", i) } }() go func() { defer wg.Done() for i := 0; i < 10; i++ { fmt.Println("线程2:", i) } }() wg.Wait() }
package main import ( "fmt" ) func main() { for i := 0; i < 2; i++ { go func() { for j := 0; j < 10; j++ { fmt.Println("协程:", i, j) } }() } // 等待协程全部执行完成 time.Sleep(time.Second) }
Grâce aux exemples de code ci-dessus, nous Vous pouvez voir Comment utiliser les threads et les coroutines. Dans l'exemple du fil, nous avons utilisé sync.WaitGroup
来等待两个线程的执行结束;而在协程示例中,我们通过go func()
的方式启动了两个协程,并通过time.Sleep()
pour attendre l'exécution de la coroutine.
En général, les similitudes et les différences entre les threads et les coroutines du langage Go se reflètent principalement dans la méthode de planification, la consommation des ressources et le mécanisme de communication. Pour les développeurs, choisir le modèle de concurrence approprié dans différents scénarios peut mieux réaliser le traitement simultané du programme et améliorer les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!