2009-08-17 8 views
10

Je voudrais obtenir une librairie fibre optique légère et portable avec licence MIT (ou plus souple). Boost.Coroutine n'est pas qualifié (pas léger), ni Portable Coroutine Library ni Kent C++ CSP (les deux GPL).Fibres légères et portatives en C++, licence MIT

Editer: pourriez-vous m'aider à en trouver un? :)

+0

Heh, semble comme je l'ai trouvé une zone inexploitée pour tous Them altruistes là-bas. :) –

Répondre

9
  1. Libtask: MIT License
  2. Libconcurrency: LGPL (! Un peu plus serré que le MIT, mais il est une bibliothèque fonctionnelle )

deux sont écrits pour C.

+0

On dirait que setcontext()/setmcontext() peut être un peu de travail sur certaines plates-formes, mais à part ça, ça a l'air facile à transporter. –

+0

Il n'y a pas de setcontext sous cygwin. – user2023370

3

list of implementations for C

pour "fils" ultra léger jeter un oeil à protothreads au bas de l'article wikipedia.

+0

J'ai finalement trouvé http://www.sics.se/~adam/pt/download.html, ce qui semble prometteur. –

+0

Prouvé comme étant un wrapper switch/case avec état implicite. Pas ce que je cherchais, mais toujours un peu intéressant. –

5

En fait, je blogged à ce sujet dans le passé. Regarde! J'espère que cela répond à vos questions. Dans ce document, je couvre un certain nombre de bibliothèques, et j'étais particulièrement intéressé par celles qui étaient utiles pour la programmation de systèmes (E/S asynchrones).

En évidence absente de cette couverture est Boost.Coroutine, dont je discuterai ici. Boost.Coroutine peut être considéré comme "poids lourd" conceptuellement (en termes de sa famille de types), mais la mise en œuvre est très efficace. Le vrai problème est que Boost.Coroutine est incomplète, et (dernière fois que j'ai vérifié) loin d'être complète. J'avais passé du temps à essayer de travailler avec l'auteur à travers ses problèmes non-initiaux, car j'avais vraiment hâte de l'utiliser en conjonction avec Boost.Asio (c'était l'un des principaux objectifs de Boost.Coroutine), mais l'auteur n'a pas a eu le temps de mener son travail à l'étape de l'examen formel de Boost.

+0

Je pense que votre lien a un bug. Essayez http://yz.mit.edu/wp/cooperative-threads-for-cc/ – user2023370

+0

Merci, corrigé l'URL! – Yang