Набор инструментов для конкурентного программирования на Rust: lock-free очереди, deques с work stealing, каналы, epoch-based GC, атомики и scoped-потоки.
ruby-concurrency/concurrent-ruby
Ruby-гем с примитивами конкурентности: futures, promises, пулы потоков, агенты, атомы, потокобезопасные коллекции и средства синхронизации.
- Звёзды
- 5,836
- Форки
- 423
- Открытые issues
- 53
- Последний коммит
- 8 дней назад
Что это?
Concurrent Ruby — гем с широким набором абстракций для конкурентного выполнения в Ruby-приложениях. В него входят средства асинхронного выполнения, такие как Promises (единый фреймворк для futures и promises), ScheduledTask и TimerTask, а также пулы потоков и другие исполнители, вдохновлённые Java.
Библиотека также предоставляет потокобезопасные объекты-значения и коллекции, включая потокобезопасные подклассы Array, Hash и Set, высокопроизводительный Map, неизменяемые и изменяемые структуры, а также атомарные типы, например AtomicReference и AtomicFixnum. Для работы с общим состоянием есть Agent и Atom в духе Clojure, а также TVar для программной транзакционной памяти и средства синхронизации, такие как CountDownLatch, Semaphore и ReadWriteLock.
Гем не зависит от внешних гемов и работает с MRI, JRuby и TruffleRuby. Дополнительные C-расширения для MRI доступны в отдельном геме concurrent-ruby-ext, а экспериментальные возможности, например Actor и Channel, входят в сопутствующий гем concurrent-ruby-edge.
Ключевые возможности
- 01Фреймворк Promises объединяет futures, promises и отложенное выполнение.
- 02Пулы потоков и другие исполнители, вдохновлённые пакетом конкурентности Java.
- 03Потокобезопасные коллекции Array, Hash, Set и Map.
- 04Атомарные ссылки, счётчики и логические значения для обновлений без блокировок.
- 05Agent и Atom для управления общим состоянием, а также TVar для транзакционной памяти.
- 06Примитивы синхронизации, включая CountDownLatch, Semaphore и ReadWriteLock.
Сценарии использования
- Запуск фоновых задач или параллельных операций ввода-вывода в Ruby-сервисе без добавления внешних зависимостей.
- Координация нескольких потоков с помощью latch, барьеров или семафоров.
- Планирование периодических или отложенных задач внутри процесса Ruby.
- Безопасный обмен изменяемым состоянием между потоками с помощью атомов или потокобезопасных коллекций.
Что важно знать
- Не удалось определить лицензию по метаданным. Перед использованием проверьте файл лицензии в репозитории.
- Функции дополнительного gem concurrent-ruby-edge могут часто меняться и нарушать обратную совместимость.
Темы
Частые вопросы
- Что такое concurrent-ruby?
- Ruby-гем с примитивами конкурентности: futures, promises, пулы потоков, агенты, атомы, потокобезопасные коллекции и средства синхронизации. Concurrent Ruby — гем с широким набором абстракций для конкурентного выполнения в Ruby-приложениях. В него входят средства асинхронного выполнения, такие как Promises (единый фреймворк для futures и promises), ScheduledTask и TimerTask, а также пулы потоков и другие исполнители, вдохновлённые Java.
- concurrent-ruby можно использовать бесплатно? Какая у него лицензия?
- concurrent-ruby распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- concurrent-ruby всё ещё поддерживается?
- Активно поддерживается. Последний коммит в concurrent-ruby — 16 окт. 2026 г..
- Для чего можно использовать concurrent-ruby?
- Запуск фоновых задач или параллельных операций ввода-вывода в Ruby-сервисе без добавления внешних зависимостей. Координация нескольких потоков с помощью latch, барьеров или семафоров. Планирование периодических или отложенных задач внутри процесса Ruby. Безопасный обмен изменяемым состоянием между потоками с помощью атомов или потокобезопасных коллекций.
- Где скачать concurrent-ruby?
- Исходный код и инструкции по установке — на GitHub: https://github.com/ruby-concurrency/concurrent-ruby
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Пул потоков-воркеров для Node.js, который выносит ресурсоёмкие вычисления из основного цикла событий и поддерживает очереди, отмену задач и статистику выполнения.
Акторный фреймворк для Rust: запускает типизированных акторов, обменивающихся сообщениями в рантайме Tokio, и поддерживает супервизию.
Бесплатный набор упражнений и примеров по Rust с открытым исходным кодом: главы, запускаемый и редактируемый код и решения.
Header-only библиотека C++ для написания параллельных программ на основе графов задач с поддержкой многопоточности на CPU и вычислений на GPU через CUDA.
Синхронизация файлов с открытым исходным кодом в реальном времени: папки синхронизируются между двумя и более компьютерами без центрального сервера.