2009-08-17 9 views
10

Mi piacerebbe avere a disposizione una fibra portatile leggera con licenza MIT (o più flessibile). Boost.Coroutine non è idoneo (non leggero), né Portable Coroutine Library né Kent C++ CSP (entrambi GPL).Fibre C++ leggere e portatili, licenza MIT

Modifica: potresti aiutarmi a trovarne uno? :)

+0

Eh, sembra che ho trovato su una superficie non sfruttato per tutti coloro Altruists là fuori. :) –

risposta

9
  1. Libtask: licenza MIT
  2. Libconcurrency: LGPL (! Un po 'più stretto di MIT, ma è una funzionale libreria )

Entrambi sono scritti per C.

+0

Sembra che setcontext()/setmcontext() potrebbe funzionare su alcune piattaforme, ma a parte questo sembra prontamente portatile. –

+0

Non c'è setcontext sotto cygwin. – user2023370

3

list of implementations for C

per ultra "fili" leggeri un'occhiata al Protothreads in fondo l'articolo di Wikipedia.

+0

Alla fine ho trovato http://www.sics.se/~adam/pt/download.html, che sembra promettente. –

+0

Provato per essere un wrapper switch/case con stato implicito. Non quello che stavo cercando, ma ancora un po 'interessante. –

5

Io in realtà blogged su questo in passato. Dare un'occhiata! Spero che risponda alle tue domande. In esso, copro un certo numero di librerie e mi interessava particolarmente quelle utili per la programmazione dei sistemi (IO asincrono).

Assente da quella copertura è Boost.Coroutine, di cui parlerò qui. Boost.Coroutine può essere considerata concettualmente "heavyweight" (in termini della sua famiglia di tipi), ma l'implementazione è abbastanza efficiente. Il vero problema è che Boost.Coroutine è incompleto e (l'ultima volta che ho controllato) non è completo. Avevo passato un po 'di tempo a provare a lavorare con l'autore attraverso i suoi problemi non di avviamento, poiché non vedevo l'ora di usarlo in collaborazione con Boost.Asio (questo era uno degli obiettivi principali di Boost.Coroutine), ma l'autore non ha ha avuto il tempo di portare il suo lavoro alla fase di revisione formale Boost.

+0

Penso che il tuo link abbia un bug. Prova http://yz.mit.edu/wp/cooperative-threads-for-cc/ – user2023370

+0

Grazie, corretto l'URL! – Yang