2009-08-17 23 views
10

Chciałbym uzyskać lekką, przenośną bibliotekę z licencją MIT (lub przegraną). Boost.Coroutine nie kwalifikuje się (nie jest lekki), nie ma też Portable Coroutine Library ani Kent C++ CSP (obie GPL).Lekkie, przenośne włókna C++, licencja MIT

Edycja: czy możesz mi pomóc znaleźć? :)

+0

Heh, wydaje się, że znalazłem niewykorzystany obszar dla wszystkich, którzy Altruiści tam. :) –

Odpowiedz

9
  1. Libtask: MIT License
  2. Libconcurrency: LGPL (! Trochę mocniej niż MIT, ale to funkcjonalny biblioteka)

Oba zostały napisane dla C

+0

Wygląda na to, że setcontext()/setmcontext() może działać na niektórych platformach, ale poza tym wygląda na przenośny. –

+0

Pod cygwin nie ma ustawionego kontekstu. – user2023370

3

list of implementations for C

dla ultralekkich „nitek” przyjrzeć Protothreads na dole artykułu wikipedia.

+0

W końcu znalazłem http://www.sics.se/~adam/pt/download.html, który wygląda obiecująco. –

+0

Wykryto, że jest opakowaniem przełącznika/obudowy z niejawnym stanem. Nie tego szukałem, ale nadal jest trochę interesujący. –

5

I rzeczywiście blogged o tym w przeszłości. Spójrz! Mam nadzieję, że odpowie na twoje pytania. Omówiłem w nim wiele bibliotek i szczególnie interesowały mnie te, które były przydatne do programowania systemów (asynchroniczne IO).

Wyraźnie nieobecny w tym zakresie jest Boost.Coroutine, który omówię tutaj. Boost.Coroutine może być uważany za "ciężki" konceptualnie (pod względem rodziny typów), ale implementacja jest dość wydajna. Prawdziwym problemem jest to, że Boost.Coroutine jest niekompletny i (ostatnio sprawdziłem) daleki od ukończenia. Spędziłem trochę czasu próbując pracować z autorem poprzez jego problemy z rozruchem, ponieważ naprawdę chciałem go użyć w połączeniu z Boost.Asio (był to jeden z głównych celów Boost.Coroutine), ale autor nie miał czas, aby zabrać swoją pracę do etapu formalnego przeglądu Boost.

+0

Myślę, że twój link ma błąd. Wypróbuj http://yz.mit.edu/wp/cooperative-threads-for-cc/ – user2023370

+0

Dzięki, popraw adres URL! – Yang