2009-08-17 7 views
10

Me gustaría obtener una lib ligera y portátil con licencia MIT (o más flexible). Boost.Coroutine no califica (no es liviano), tampoco lo hace Portable Coroutine Library ni Kent C++ CSP (ambos GPL).Ligeras, fibras C++ portátiles, licencia MIT

Editar: ¿podría ayudarme a encontrar uno? :)

+0

je, parece que he encontrado un área sin explotar para todos ellos altruistas por ahí. :) –

Respuesta

9
  1. Libtask: licencia MIT
  2. Libconcurrency: LGPL (! Un poco más apretado que el MIT, pero es un funcional biblioteca )

Ambos están escritos para C.

+0

Parece que setcontext()/setmcontext() podría funcionar en ciertas plataformas, pero aparte de eso parece fácil de transportar. –

+0

No hay setcontext bajo cygwin. – user2023370

3

list of implementations for C

de "hilos" ultraligeros echar un vistazo a Protothreads en la parte inferior del artículo de Wikipedia.

+0

Finalmente encontré http://www.sics.se/~adam/pt/download.html, que parece prometedor. –

+0

Provocado como un interruptor/envoltorio de caja con estado implícito. No es lo que estaba buscando, pero aún algo interesante. –

5

que en realidad blogged sobre esto en el pasado. ¡Echar un vistazo! Espero que responda tus preguntas En él, cubro una cantidad de bibliotecas, y me interesaron particularmente aquellas que eran útiles para la programación de sistemas (IO asíncrono).

Aparentemente ausente de esa cobertura es Boost.Coroutine, que analizaré aquí. Boost.Coroutine puede considerarse conceptualmente "pesado" (en términos de su familia de tipos), pero la implementación es bastante eficiente. El verdadero problema es que Boost.Coroutine está incompleto y (la última vez que lo comprobé) está lejos de estar completo. Pasé algún tiempo tratando de trabajar con el autor a través de sus problemas no iniciales, ya que estaba deseando usarlo junto con Boost.Asio (este fue uno de los principales objetivos de Boost.Coroutine), pero el autor no Tuvo tiempo de llevar su trabajo a la etapa de revisión formal de Boost.

+0

Creo que su enlace tiene un error. Pruebe http://yz.mit.edu/wp/cooperative-threads-for-cc/ – user2023370

+0

¡Gracias, corrigió la URL! – Yang