2009-08-17 4 views
10

Я хотел бы получить легкую, портативную волоконную библиотеку с лицензией MIT (или более свободную). Boost.Coroutine не квалифицируется (нелегко), ни портативная библиотека Coroutine, ни Kent C++ CSP (оба GPL).Легкие, портативные волокна C++, лицензия MIT

Редактировать: не могли бы вы помочь мне найти? :)

+0

Хеха, кажется, я нашел область для неиспользованной всех Them альтруистов там. :) –

ответ

9
  1. Libtask: MIT License
  2. Libconcurrency: LGPL (! Немного жестче, чем MIT, но это функциональная библиотека)

Обе написаны на C.

+0

Похоже, что setcontext()/setmcontext() может работать на некоторых платформах, но, кроме того, он выглядит легко переносимым. –

+0

Не существует setcontext под cygwin. – user2023370

3

list of implementations for C

для ультра легкие «нити», посмотрите на Protothreads в нижней части статьи википедии.

+0

В итоге я нашел http://www.sics.se/~adam/pt/download.html, который выглядит многообещающим. –

+0

Предполагается, что это оболочка switch/case с неявным состоянием. Не то, что я искал, но все же несколько интересный. –

5

Я на самом деле blogged об этом в прошлом. Взгляни! Надеюсь, это ответит на ваши вопросы. В нем я рассказываю о нескольких библиотеках, и меня особенно интересовали те, которые были полезны для системного программирования (асинхронный ввод-вывод).

Заметно отсутствующий из этого покрытия Boost.Coroutine, о котором я расскажу здесь. Boost.Coroutine можно рассматривать как «тяжеловесный» концептуально (с точки зрения его семейства типов), но реализация довольно эффективна. Реальная проблема заключается в том, что Boost.Coroutine является неполным, и (последний раз я проверил) далеко не полный. Я потратил некоторое время на то, чтобы попытаться работать с автором по его не стартерным проблемам, так как я действительно с нетерпением ждал его использования в сочетании с Boost.Asio (это была одна из основных целей Boost.Coroutine), но автор не было время, чтобы занять его работу на официальном этапе обзора Boost.

+0

Я думаю, что у вашей ссылки есть ошибка. Попробуйте http://yz.mit.edu/wp/cooperative-threads-for-cc/ – user2023370

+0

Спасибо, исправил URL! – Yang

 Смежные вопросы

  • Нет связанных вопросов^_^