Ir idioma [modelo GPM]

Insertar descripción de la imagen aquí

En go, los subprocesos son entidades que ejecutan Groutine y la función del programador es asignar Groutines ejecutables a los subprocesos de trabajo.

modelo GPM

Insertar descripción de la imagen aquí

No existe una relación cuantitativa absoluta entre el número de M y P. Cuando se bloquea una M, P creará una o cambiará a otra M, por lo que incluso si está configurada, se pueden crear runtime.GOMAXPROCS(1)
múltiples M;
cuando M descubre que está enviando una rutina G para sí misma Cuando la cola P está vacía, "robará" activamente de otras colas P. El iniciador de este proceso es el programador de rutinas.

Cuando M está bloqueado, el programador P liberará el P vinculado al M bloqueado y luego entregará el P a otras áreas M para su ejecución;

Para aprovechar mejor el rendimiento de M y P, el modelo GPM no permitirá que un G1 bloqueado retrase eternamente un P.

Insertar descripción de la imagen aquí

En Go, una corrutina puede ocupar hasta 10 ms de CPU, esto es para evitar que otras corrutinas no tengan CPU disponible.

Proceso de programación de rutinas

Insertar descripción de la imagen aquí

Supongo que te gusta

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