Existe diferença entre fibras, coroutines e fios verdes e se é assim que é?

44
Hoje eu estava lendo vários artigos na Internet sobre fibras, coroutines e fios verdes, e parece que esses conceitos têm muito em comum, mas há pequenas diferenças, especialmente quando falamos de fibras e coroutines.

Existe um resumo conciso e correto do que os torna diferentes um do outro?

    
por DejanLekic 22.08.2014 / 16:59
fonte

1 resposta

93

Um Fiber é um thread leve que usa multitarefa cooperativa em vez de multitarefa preemptiva. Uma fibra em execução deve "render" explicitamente para permitir que outra fibra seja executada, o que torna sua implementação muito mais fácil do que os threads do kernel ou do usuário.

Uma Coroutine é um componente que generaliza uma sub-rotina para permitir vários pontos de entrada para suspender e retomar a execução em determinados locais. Ao contrário das sub-rotinas, as corrotinas podem sair chamando outras corrotinas, que podem mais tarde retornar ao ponto em que foram invocadas na co-rotina original.

Um Fio Verde é um segmento agendado por uma máquina virtual (VM) em vez de nativamente pelo sistema operacional subjacente sistema. Os encadeamentos verdes emulam ambientes multithread sem depender de nenhum recurso nativo do SO e são gerenciados no espaço do usuário em vez do espaço do kernel, permitindo que trabalhem em ambientes que não possuem suporte a encadeamentos nativos.

    
por 22.08.2014 / 17:12
fonte