Легкие портативные оптоволоконные кабели C++, лицензия MIT.

StackOverflow https://stackoverflow.com/questions/1285714

Вопрос

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

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

Это было полезно?

Решение

  1. Либтаск:Лицензия MIT
  2. Libconcurrency:LGPL (немного жестче, чем MIT, но это функциональный библиотека!)

Оба написаны для C.

Другие советы

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

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

список реализаций для C

для сверхлегких «потоков» взгляните на Protothreads в нижней части статьи в Википедии.

Теперь у вас есть два лучших варианта с лицензией Boost:

Существует невероятно быстрая и легкая библиотека асимметричных сопрограмм C — Либако.

Он действительно маленький, очень быстрый и чрезвычайно эффективный по памяти:

Наряду с реализацией готовой производственной библиотеки C Coroutine, вот подробная документация о том, как реализовать самую быструю и правильную библиотеку Coroutine, а также строгое математическое доказательство;

Он имеет не более 700 LOC, но имеет полную функцию, которую вы можете захотеть из библиотеки Coroutine;

Тенковая часть показывает, что одно время переключения контекста между Coroutines занимает всего около 10 нс (для случая автономного стека) на машине AWS C5D.Large;

Пользователь мог бы выбрать создание новой Coroutine с автономным стеком или со стеком общего пользования (можно обмениваться с другими);

Это чрезвычайно эффективно использует память:10 000 000 Сумма CO одновременно для запуска только 2,8 ГБ физической памяти (запустите с TCMALLOC, каждый CO имеет конфигурацию размера Copy-Stack 120B).

Он также имеет очень подробную документацию.

ПС:

Он находится под лицензией Apache версии 2.0.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top