Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo hacer que las llamadas cgo omitan el grupo de subprocesos

Cómo hacer que las llamadas cgo omitan el grupo de subprocesos

En el lenguaje go, se puede llamar a la biblioteca C a través de cgo. Sin embargo, debido al mecanismo de rutina, las llamadas a funciones C externas pueden regresar rápidamente o ejecutarse durante mucho tiempo. Para evitar que se bloquee la programación de rutinas, para cada llamada a cgo que se ejecute, siempre tome un subproceso del grupo de subprocesos y luego regrese a la rutina original cuando se complete. De esta manera, cada llamada de cgo generará enormes gastos generales. Por lo tanto, cuando se implementan muchas bibliotecas go, no envuelven la biblioteca C, sino que eligen usar go por completo. Esto deja sin una gran cantidad de bibliotecas C existentes disponibles.

Después de leer el código go, descubrí que las llamadas cgo se pueden realizar sin llamar al grupo de subprocesos, lo cual no es muy problemático, así que modifiqué el comando cgo yo mismo. Como se muestra en el código siguiente.

paquete cgo//// int add(int a, int b){//int ret = a b; //return ret// }//importar "C"func CAdd(a, b int )int { return int(C . add(C . int(a), C . int(b))} func ASM CAdd(a, b int)int { return int(C . add(C . int(a), C.int(b)))}

C.add es el método tradicional de llamada de cgo