J'aimerais avoir une part de fibre libère légère et portable avec une licence MIT (ou un lâche). Boost.Coroutine ne se qualifie pas (non légère), ni la bibliothèque de Coroutine portable ni Kent C ++ csp (à la fois GPL). P>
Edit: Pourriez-vous m'aider à en trouver un? :) p>
6 Réponses :
Liste des implémentations pour C P>
pour "threads" ultra léger, jetez un coup d'œil à Protothreads au bas de l'article Wikipedia. P>
J'ai finalement trouvé sics.se/~adam/pt/download.html , qui semble prometteur.
S'est avéré être un emballage d'interrupteur / cas d'état implicite. Pas ce que je cherchais, mais encore un peu intéressant.
Les deux sont écrites pour c. p>
On dirait que SetContext () / SetMContext () pourrait être un travail sur certaines plates-formes, mais autre que cela semble facilement portable.
Il n'y a pas de SetContext sous Cygwin.
i en fait blogué à ce sujet dans le passé. Regarde! J'espère que cela répond à vos questions. En cela, je couvre un certain nombre de bibliothèques et j'étais particulièrement intéressé par ceux qui étaient utiles pour la programmation des systèmes (IO asynchrones). P>
Contempêtement absent de cette couverture est boost.coroutine , que je vais discuter ici . Boost.Coroutine peut être considéré comme "poids lourd" conceptuellement (en termes de sa famille de types), mais la mise en œuvre est assez efficace. Le vrai problème est que Boost.Coroutinne est incomplet et (dernier que j'ai vérifié) loin de terminer. J'avais passé du temps à essayer de travailler avec l'auteur à travers ses problèmes non démarreurs, car je suis impatient de l'utiliser conjointement avec Boost.Asio (c'était l'un des objectifs principaux de Boost.Coroutine), mais l'auteur n'a pas eu le temps de prendre son travail à la phase de révision officielle de Boost. P>
Je pense que votre lien a un bug. Essayez Yz.mit.edu/wp/Cooperative-threads-for-cc < / a>
Vous avez maintenant deux meilleures options avec la licence Boost: p>
Il y a une bibliothèque de coroutines asymétriques rapide et légère et léger - libako . P>
C'est vraiment petit, très rapide et extrêmement efficace: P>
avec la mise en œuvre d'une COROUTINE DE PRODUCTION-REAKE bibliothèque, voici une documentation détaillée sur la manière de mettre en œuvre un la bibliothèque coroutine la plus rapide et correcte et aussi avec un strict Preuve mathématique; P>
Il n'a pas plus de 700 loc, mais a le plein fonction que vous pouvez souhaiter d'une bibliothèque de Coroutines; p>
la partie de référence montre que la fois du contexte bascule uniquement entre les coroutines seulement prend environ 10 ns (pour le cas d'une pile autonome) sur les AWS machine C5D.Large; p>
L'utilisateur pourrait choisir de créer une nouvelle coroutine avec un pile autonome ou avec une pile de partage (pourrait être partagé avec d'autres); p>
Il est extrêmement efficace de la mémoire: 10 000 000 de CO simultanément pour exécuter seulement la mémoire physique de 2,8 Go (fonctionner avec TCMALLOCC, chaque CO dispose d'une configuration de taille de copie-pile de 120b). P> blockQuote>
Il a également une documentation très détaillée. P>
PS: p>
C'est sous la licence Apache, version 2.0. P>
Si Boost semble être lourd, des personnes utiles ont extraites les parties pertinentes de Boost ( fcontext code>) en tant que bibliothèque autonome, par exemple. DEBOOST.CONTEXT . P>
Heh, on dirait que j'ai trouvé une zone inexploitée pour tous les altruistes là-bas. :)