El sistema operativo se ocupa de asignar tiempos de CPU a los distintos threads que se estén
ejecutando simultáneamente. Aun en el caso de disponer de un ordenador con más de un procesador
(2 ó más CPUs). el número de threads simultáneos suele siempre superar el| número de CPUs. por
lo que se debe repartir el tiempo de forma que parezca que todos los procesos corren a la vez (quizás
más lentamente), aun cuando sólo unos pocos pueden estar ejecutándose en un instante de tiempo.
Los tiempos de CPU que el sistema continuamente asigna a los distintos threads en estado
nnntable se utilizan en ejecutar el método ruit() de cada thread. Por diversos motivos, un thread
puede en un determinado momento renunciar "voluntariamente" a su tiempo de CPU y otorgárselo
al sistema para que se lo asigne a otro thread.
Esta "renuncia" se realiza mediante el método yieldf).
Es importante que este método sea utilizado por las actividades que tienden a "monopolizar" la
CPU. El método yieldQ viene a indicar que en ese momento no es muy importante para ese thread
el ejecutarse continuamente y por lo tanto tener ocupada la CPU. En caso de que ningún thread esté
requiriendo la CPU para una actividad muy intensiva, el sistema volverá casi de inmediato a asignar
nuevo tiempo al thread que fue "generoso*' con los demás. Por ejemplo, en un Pentium II 400 Mhz
es posible llegar a más de medio millón de llamadas por segundo al método yield(). dentro del
método run('), lo que significa que llamar al método yieldf) apenas detiene al thread. sino que sólo
ofrece el control de la CPU para que el sistema decida si hay alguna otra tarea que tenga mayor
prioridad.
No hay comentarios:
Publicar un comentario