Pergunta

Gostaria costuma ficar, uma lib fibra portátil leve com licença MIT (ou perdedor). não Boost.Coroutine se qualificam (não leve), nem portátil co-rotina Biblioteca nem Kent C ++ CSP (ambos GPL).

Edit: você poderia me ajudar a encontrar um? :)

Foi útil?

Solução

  1. Libtask : MIT License
  2. Libconcurrency : LGPL (um pouco mais apertado do que o MIT, mas é um funcional biblioteca!)

Ambos são escritos para C.

Outras dicas

Na verdade, eu Blogged sobre isso no passado. Dar uma olhada! Espero que responde às suas perguntas. Nele, eu cobrir um número de bibliotecas, e eu estava particularmente interessado em aqueles que foram úteis para sistemas de programação (IO assíncrono).

Visivelmente ausente de que a cobertura é Boost.Coroutine , que eu vou discutir aqui . Boost.Coroutine pode ser considerado "pesado" conceitualmente (em termos de sua família de tipos), mas a implementação é bastante eficiente. O verdadeiro problema é que Boost.Coroutine é incompleta, e (última vez que verifiquei) longe de ser completa. Eu tinha passado algum tempo tentando trabalhar com o autor através de suas questões non-starter, como eu estava realmente ansioso para usá-lo em conjunto com Boost.Asio (este foi um dos principais objetivos do Boost.Coroutine), mas o autor não tem teve tempo para tomar o seu trabalho para o estágio de revisão formal Boost.

lista de implementações para C

para ultra leve "threads" dar uma olhada em Protothreads na parte inferior do artigo do wikipedia.

Agora você tem duas melhores opções com licença Boost:

Há uma leve C biblioteca coroutine assimétrico super rápido e - libaco .

É realmente pequeno, memória muito rápida e extremamente eficiente:

Juntamente com a implementação de uma co-rotina pronto para produção C biblioteca, aqui é uma documentação detalhada sobre como implementar um mais rápido e biblioteca coroutine correta e também com um rigoroso prova matemática;

Ele não tem mais de 700 LOC mas tem a plena função que você pode querer de uma biblioteca coroutine;

A parte de referência que mostra um tempo de comutação entre o contexto coroutines única leva cerca de 10 ns (para o caso de pilha standalone) nas AWS c5d.large máquina;

O usuário poderia optar por criar uma nova co-rotina com um pilha independente ou com uma pilha de ações (pode ser compartilhado com os outros);

É extremamente eficiente de memória: 10.000.000 quantidade de co simultaneamente para executar apenas custa 2,8 GB de memória física (executado com tcmalloc, cada co tem uma configuração tamanho de cópia-stack 120B).

Ele também tem uma documentação muito detalhada.

PS:

É sob a Licença Apache, Versão 2.0.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top