Quelle est la différence entre une coroutine et un fil?


Réponse 1:

Quelle est la différence entre une coroutine et un fil?

Pas beaucoup.

La principale différence est que les coroutines sont coopératives. Un fil est préemptif.

Les deux ont une forme d'unité de suivi de contexte. Les deux ont une méthode pour passer d'un contexte à un autre.

Le thread utilise un événement basé sur une horloge / interruption pour changer le contexte en plus de ce qu'une co-routine utilise, où une co-routine utilise un appel de fonction (quelque chose à «céder à un autre contexte»), et la co-routine peut être reprise plus tard après cet appel de fonction.


Réponse 2:

J'ai seulement entendu parler de coroutines dans le contexte du CPU RCA1802. Il a un registre de 4 bits qui lui indique lequel des 16 registres de 16 bits est le compteur de programme actuel. Il peut donc «appeler» un sous-programme (ou coroutine) en basculant le PC vers un autre registre.

Je ne sais pas si la définition d'un thread inclut une exigence pour être préempté par un tic d'horloge ou toute autre interruption.