Filas ring buffer lock-free de C++14, em header-only, para troca de mensagens entre threads com latência mínima entre push e pop.
crossbeam-rs/crossbeam
Uma crate Rust com ferramentas de concorrência: filas lock-free, deques com roubo de trabalho, canais, GC baseado em epochs, atomics e threads com escopo.
- Estrelas
- 8,628
- Forks
- 589
- Issues abertas
- 173
- Último commit
- há 23 dias
O que é?
Crossbeam é uma biblioteca Rust com componentes básicos para programação concorrente. Ela inclui atomics como AtomicCell, estruturas de dados lock-free, como filas MPMC limitadas e ilimitadas, deques com roubo de trabalho e um garbage collector baseado em epochs para liberar memória com segurança em estruturas concorrentes.
Também inclui canais multi-producer multi-consumer para troca de mensagens, uma primitiva para estacionar threads, um lock de leitura e escrita particionado, um WaitGroup para sincronizar etapas de computação e threads com escopo que podem pegar variáveis locais da stack emprestadas. A crate principal reexporta ferramentas de subcrates menores, permitindo que um projeto dependa apenas do pacote crossbeam.
Muitos componentes podem ser usados em ambientes no_std, embora alguns exijam o recurso alloc. A versão mínima do Rust compatível é a 1.74.
Recursos principais
- 01Filas MPMC lock-free limitadas e ilimitadas (ArrayQueue, SegQueue)
- 02Deques com roubo de trabalho para criar escalonadores de tarefas
- 03Canais multi-producer multi-consumer para troca de mensagens
- 04Garbage collection baseado em epochs para estruturas de dados concorrentes
- 05Atomics, estacionamento de threads, RwLock particionado, WaitGroup e threads com escopo
- 06Vários componentes podem ser usados em ambientes no_std
Casos de uso
- Criar um escalonador de tarefas multithreaded com deques que usam roubo de trabalho
- Trocar mensagens entre threads com canais MPMC
- Compartilhar uma fila entre vários produtores e consumidores sem locks
- Criar threads que pegam dados emprestados do frame de stack atual
Início rápido
- 1
Adicione crossbeam como dependência no Cargo.toml
- 2
Adicione a dependência crossbeam com o Cargo
crossbeam = "0.8"
Antes de usar
- A versão mínima compatível do Rust é a 1.74.
Tópicos
Perguntas frequentes
- O que é crossbeam?
- Uma crate Rust com ferramentas de concorrência: filas lock-free, deques com roubo de trabalho, canais, GC baseado em epochs, atomics e threads com escopo. Crossbeam é uma biblioteca Rust com componentes básicos para programação concorrente. Ela inclui atomics como AtomicCell, estruturas de dados lock-free, como filas MPMC limitadas e ilimitadas, deques com roubo de trabalho e um garbage collector baseado em epochs para liberar memória com segurança em estruturas concorrentes.
- crossbeam é gratuito? Qual é a licença?
- crossbeam é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- crossbeam ainda é mantido?
- Manutenção ativa. O último commit de crossbeam foi em 1 de out. de 2026.
- Para que posso usar crossbeam?
- Criar um escalonador de tarefas multithreaded com deques que usam roubo de trabalho Trocar mensagens entre threads com canais MPMC Compartilhar uma fila entre vários produtores e consumidores sem locks Criar threads que pegam dados emprestados do frame de stack atual
- Como instalar crossbeam?
- Adicione crossbeam como dependência no Cargo.toml Adicione a dependência crossbeam com o Cargo: crossbeam = "0.8"
- Onde consigo crossbeam?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/crossbeam-rs/crossbeam
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma biblioteca de paralelismo de dados para Rust que transforma iteradores sequenciais em paralelos com uma mudança mínima na API.
Gem Ruby com primitivas de concorrência, como futures, promises, pools de threads, agents, atoms, coleções thread-safe e classes de sincronização.
Sincronização contínua de arquivos de código aberto que mantém pastas sincronizadas entre dois ou mais computadores sem um servidor central.
Um mecanismo de inferência PyTorch para Diffusion Transformers (DiTs) que adiciona cache, paralelismo, quantização e offload para CPU ao Diffusers.
Plugin para vLLM que adiciona as otimizações de inferência da Snowflake — Shift Parallelism, speculative decoding e SwiftKV — para servir LLMs e gerar embeddings com mais rapidez e menor custo.