No agendador do GHC RTS, por que marcar uma capacidade como gratuita?

9

Quando leio o comentário do GHC Wiki sobre o agendador fiquei confuso sobre esta seção:

  

Um motivo por trás da marcação de um recurso   como livre quando é entregue é para   suporte a chamadas rápidas. Ao fazer um   chamada estrangeira segura temos que liberar   a capacidade, e, portanto, entregá-lo   para outro thread de trabalho. Se o   chamada estrangeira é curta, não queremos   para incorrer no custo de um switch de contexto   ao retornar, mas desde que marcamos o   Capacidade como livre há uma boa   chance a tarefa de retorno será capaz   para readquiri-lo imediatamente e   continuar. O trabalhador que nós acordamos   vai achar que a capacidade é   possuído, e voltar a dormir novamente    (isso pode incorrer em um contexto duplo   mudar se não houver CPUs livres no   qual executar o trabalhador, no entanto).   

Minha pergunta:
Para a frase em negrito, o que de fato levará ao "Double context switch", com ou sem marcação de um recurso como livre. Além disso, quais são os dois "switches" se eles acontecem - de who1 a who2, então who2 to who3?

    
por Nybble 18.05.2011 в 16:22
fonte

1 resposta

3

Parcialmente respondida aqui: link (uma cópia: link )

    
por Edward Z. Yang 19.05.2011 / 20:05
fonte