En Golang, attendre qu'une fonction soit terminée est une exigence de programmation courante. Que vous attendiez la fin d'une goroutine ou que vous attendiez l'arrivée des données dans un canal, vous devez utiliser une méthode d'attente appropriée pour la gérer. Dans cet article, nous vous présenterons quelques méthodes et techniques pour attendre l'achèvement des fonctions dans Golang. Que vous soyez un développeur débutant ou expérimenté, cet article vous fournira des conseils utiles et des exemples de code pour vous aider à mieux gérer l'attente des fonctions pour terminer les scénarios. Regardons de plus près!
J'ai le code suivant en golang :
func A(){ go print("hello") } func main() { A() // here I want to wait for the print to happen B() }
Comment s'assurer que b() n'est exécuté qu'après l'impression ?
Utilisez sync.mutex
var l sync.mutex func a() { go func() { print("hello") l.unlock() }() } func b() { print("world") } func testlock(t *testing.t) { l.lock() a() l.lock() // here i want to wait for the print to happen b() l.unlock() }
Utilisez sync.waitgroup
var wg sync.waitgroup func a() { go func() { print("hello") wg.done() }() } func b() { print("world") } func testlock(t *testing.t) { wg.add(1) a() wg.wait() // here i want to wait for the print to happen b() }
Utilisez chan
func A() chan struct{} { c := make(chan struct{}) go func() { print("hello") c <- struct{}{} }() return c } func B() { print("world") } func TestLock(t *testing.T) { c := A() // here I want to wait for the print to happen <-c B() }
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!