es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se puede calcular el número exacto de diferentes resultados utilizando threads?

Entonces, supongamos que tengo las siguientes funciones:
Funciones

Si ejecutara 3 hilos diferentes que funcionan de la siguiente manera:
el hilo 1 ejecuta f1, el hilo 2 ejecuta f2, el hilo 3 ejecuta f3

¿Cómo puedo calcular el número máximo de resultados diferentes?
(Podrías probar todas las combinaciones posibles de cambio de contexto, pero eso es excesivo)

He encontrado 12 posibles resultados:
12,10,0,20,21,6,5,1,16,11,22
Entonces, ¿cómo es posible saber que hay un máximo de 12 resultados diferentes?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para calcular el número máximo de salidas diferentes para las funciones dadas cuando se ejecutan en tres hilos diferentes, necesitamos considerar las distintas posibles interlecciones de las funciones debido al cambio de contexto. Una manera de hacer esto es dibujar un diagrama de interlección de hilos, donde cada columna representa el orden de ejecución para un hilo, y cada fila representa el momento en el que se puede producir un cambio de contexto.

    Por ejemplo, el diagrama para el escenario dado se vería así:

     T1  | f1  |    |    | f1  |    | f1  |    |    | f1  |    |    | f1
     T2  |    | f2 |    |    |    |    | f2 | f2 |    |    | f2 | f2 |    
     T3  |    |    | f3 | f3 |    |    |    |    | f3 | f3 |    |    | f3
         -------------------------------------------------------------
    sal  | 12  | 10 |  0 | 20 | 21 |  6 |  5 |  1 | 16 | 11 | 22 |    |
    

    Los números en la fila sal representan las posibles salidas que podrían producirse por la interlección de las funciones. Para encontrar el número máximo de salidas diferentes, simplemente podemos contar el número de valores distintos en la fila sal, que en este caso es 12.

    Nótese que hay otras formas de calcular los diferentes resultados posibles, como simular programáticamente múltiples ejecuciones de las funciones con diferentes interlecciones de hilos, pero este enfoque puede convertirse rápidamente en algo computacionalmente costoso a medida que el número de funciones y hilos aumenta. Dibujar un diagrama de interlección de hilos puede ser una forma más sencilla y visual de razonar sobre el problema.

Comments are closed.