¿Qué es una llamada de cola?

En la programación de computadoras, una llamada de cola es una situación específica dentro del código fuente del programa en el que una función, subrutina o procedimiento devuelve un valor esperado llamando a otra función en lugar de simplemente pasar una variable que contiene el valor de retorno. El nombre en sí denota que la función llamó a calcular el valor que se devolverá es al final, o cola, de la función que lo llama para suministrar un valor de retorno. Una llamada de cola es de interés para algunos programadores porque, con ciertas optimizaciones o comportamientos del compilador, no se utiliza espacio adicional de pila para almacenar ubicaciones de código de la función principal; La función de cola se usa para generar los informes de valor de retorno directamente de nuevo al punto de llamada donde se invocó la función original. El uso de una llamada de cola es particularmente útil en situaciones en las que se emplea la recursión, porque la cantidad de espacio de pila utilizado para almacenar las direcciones de la persona que llama en los casos en que las llamadas recursivas nido podrían agotarse rápidamente y detener el programaM Ejecución. Aunque el uso de llamadas de cola puede ayudar a aumentar la velocidad, el uso de la memoria y la eficiencia en un programa, también puede conducir a situaciones en las que el código fuente se reestructura para usar las llamadas de una manera que dificulta la depuración y rastrear, especialmente con casos de recursión.

La existencia de una llamada de cola se debe en gran parte a cómo funciona la pila de llamadas dentro de la mayoría de los programas de computadora y arquitecturas del sistema. La pila, que es como una pila de placas, es una estructura de datos de primera entrada. Cuando se llama a una función, subrutina o procedimiento, la dirección desde la cual se realiza la llamada, llamada marco de pila, se almacena en la pila. Esto significa que un programa que llama a la función A, que luego llama a la función B, tendrá dos marcos de pila, uno para la función B y otro debajo de la función A. A. Después de que la función B termine de ejecución, su marco de pila se aparece desde la parte superior de la pila y la ejecuciónvuelve a la función A, que tiene su marco aparecido en la pila cuando está hecho, y finalmente devuelve el control del programa al punto desde el cual se llamaba originalmente la primera función.

.

Cuando se usa una llamada de cola, la declaración de retorno en una función usa directamente el valor de retorno de otra función como datos que se enviarán al código de llamada. En el ejemplo anterior, si la función A llama a la función B directamente con la instrucción de retorno, entonces se ha formado una llamada de cola. Dentro de la pila de llamadas, en lugar de tener un marco de pila para ambas funciones A y B, la función B recibirá la dirección de retorno de la función A y el marco de la pila de la función A, se explotará y eliminará, lo que significa que la función B pasará su valor de retorno directamente a la ubicación que se llama Función A sin tener que pasar el control A. Esto aumenta la velocidad de las llamadas de la función, así como ayudará a retener la cantidad de información en la Stack.

Las propiedades de una llamada de cola pueden hacerlas muyOpción atractiva para funciones recursivas. Una función recursiva es aquella que se llama a sí misma repetidamente para calcular un valor, como puede ser el caso al atravesar una estructura de datos de la lista. No se crean marcos de pila adicionales para las llamadas de funciones anidadas, por lo que se pueden realizar niveles muy profundos de recursión sin la amenaza inmediata de un desbordamiento de pila y una posible terminación del programa.

OTROS IDIOMAS