Aplicación de sincronización/asincrónica y bloqueo en el paquete Go~~sync

Implementación de bloqueo en el paquete Go~~sync

Los bloqueos Mutex se proporcionan en el paquete de sincronización en marcha;

En el artículo anterior del canal Go, utilizamos la función time.Sleep() para bloquear la Goroutine de la función principal hasta que finalicen todas las corrutinas. Sin embargo, este no es un buen método porque no podemos conocer con precisión las corrutinas en aplicaciones reales. terminará (se deben considerar una serie de factores como el rendimiento del servidor, las fluctuaciones de la red y la E/S);

WaitGroup se proporciona en el paquete sysn para realizar la coordinación entre corrutinas;

Sincronizar grupo de espera

Sincronización síncrona y sincronización asíncrona;

El grupo de espera de sincronización WaitGroup se proporciona en Go
para ver el código fuente:

//等待一组Goroutine完成; 阻塞的直至所有的goroutine完成;
// A WaitGroup waits for a collection of goroutines to finish.
// The main goroutine calls Add to set the number of
// goroutines to wait for. Then each of the goroutines
// runs and calls Done when finished. At the same time,
// Wait can be used to block until all goroutines have finished.
//

Supongo que te gusta

Origin blog.csdn.net/weixin_54061333/article/details/130988482
Recomendado
Clasificación