Excelente pregunta No recuerdo que nuestro curso CS 102 mencionara una sola aplicación para la cola de doble final.
Hasta el día de hoy, la única aplicación que conozco es el programador de robo de trabajo mencionado en el artículo de Wikipedia .
Funciona esencialmente de la siguiente manera:
En un modelo de procedimiento normal de un solo subproceso, cada llamada de función empuja un registro de activación en una llamada pila de llamadas . Un registro de activación contiene las variables y parámetros locales de esa llamada. Una vez que se completa la llamada al método ("retornos"), el último registro de activación se saca de la pila de llamadas.
Esto es particularmente importante porque así es como se implementa la recursividad: la estructura de la recursión se representa en el estado actual de la pila de llamadas.
Al poner en paralelo un algoritmo recursivo, podemos explotar esta propiedad reemplazando la pila de llamadas con una cola de llamadas. Cada subproceso en el cálculo obtiene su propia cola de llamadas y empuja y muestra registros de activación como en una ejecución secuencial.
Pero una vez que un subproceso ha terminado su trabajo (= su cola de llamadas está vacía), roba el trabajo de otro subproceso al eliminar un registro de activación de la cola de llamadas de ese subproceso al eliminarlo del extremo "incorrecto".
Básicamente, la cola de llamadas actúa como dos pilas de llamadas que ahora sirven a dos hilos.