11
votes

Fibres légères, portables C ++, licence MIT

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).

Edit: Pourriez-vous m'aider à en trouver un? :)


1 commentaires

Heh, on dirait que j'ai trouvé une zone inexploitée pour tous les altruistes là-bas. :)


6 Réponses :


3
votes

Liste des implémentations pour C

pour "threads" ultra léger, jetez un coup d'œil à Protothreads au bas de l'article Wikipedia.


2 commentaires

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.



9
votes
  1. libtask : licence MIT
  2. libconcurrency : LGPL (un peu plus serré que le mit, mais c'est un fonctionnaire bibliothèque!)

    Les deux sont écrites pour c.


2 commentaires

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.



5
votes

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).

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.


1 commentaires

Je pense que votre lien a un bug. Essayez Yz.mit.edu/wp/Cooperative-threads-for-cc < / a>




2
votes

Il y a une bibliothèque de coroutines asymétriques rapide et légère et léger - libako .

C'est vraiment petit, très rapide et extrêmement efficace:

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;

Il n'a pas plus de 700 loc, mais a le plein fonction que vous pouvez souhaiter d'une bibliothèque de Coroutines;

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;

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);

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).

Il a également une documentation très détaillée.

PS:

C'est sous la licence Apache, version 2.0.


0 commentaires

1
votes

Si Boost semble être lourd, des personnes utiles ont extraites les parties pertinentes de Boost ( fcontext ) en tant que bibliothèque autonome, par exemple. DEBOOST.CONTEXT .


0 commentaires