Repolode
ruby-concurrency

ruby-concurrency/concurrent-ruby

future、promise、スレッドプール、agent、atom、スレッドセーフなコレクション、同期クラスなどの並行処理プリミティブを提供するRuby gem。

スター
5,837
フォーク
423
未解決の Issue
53
最終コミット
8 日前

これは何?

Concurrent Rubyは、Rubyアプリケーション向けに幅広い並行処理の抽象化を提供するgemです。統一されたfuture/promiseフレームワークであるPromisesや、ScheduledTask、TimerTaskなどの非同期処理ツールに加え、Javaに着想を得たスレッドプールや各種executorを備えています。

また、Array、Hash、Setのスレッドセーフなサブクラス、高並行性のMap、イミュータブルおよびミュータブルなstruct、AtomicReferenceやAtomicFixnumなどのatomic型を含む、スレッドセーフな値オブジェクトとコレクションも提供します。共有状態を扱うためのClojure風のAgentとAtomのほか、ソフトウェアトランザクショナルメモリ向けのTVar、CountDownLatch、Semaphore、ReadWriteLockなどの同期クラスも用意されています。

このgemは外部gemへの依存がなく、MRI、JRuby、TruffleRubyで動作するよう設計されています。MRI向けのオプションのC拡張は別のconcurrent-ruby-ext gemで提供され、ActorやChannelなどの実験的機能は、関連gemのconcurrent-ruby-edgeに含まれています。

主な機能

  • 01future、promise、遅延評価を組み合わせたPromisesフレームワーク。
  • 02Javaの並行処理パッケージに着想を得たスレッドプールや各種executor。
  • 03スレッドセーフなArray、Hash、Set、Mapコレクション。
  • 04ロックフリーで更新できるatomic reference、カウンター、boolean。
  • 05共有状態を管理するAgentとAtom、およびトランザクショナルメモリ向けのTVar。
  • 06CountDownLatch、Semaphore、ReadWriteLockなどの同期プリミティブ。

ユースケース

  • 外部依存を追加せずに、Rubyサービスでバックグラウンドジョブや並列I/Oタスクを実行する。
  • latch、barrier、semaphoreを使って複数のスレッドを協調させる。
  • Rubyプロセス内で定期処理や遅延実行をスケジュールする。
  • atomやスレッドセーフなコレクションを使って、スレッド間でミュータブルな状態を安全に共有する。

使う前に知っておきたいこと

  • メタデータからライセンスを検出できませんでした。使用する前にリポジトリのライセンスファイルを確認してください。
  • concurrent-ruby-edge の companion gem に含まれる機能は頻繁に変更され、後方互換性が損なわれる可能性があります。

トピック

よくある質問

concurrent-ruby とは?
future、promise、スレッドプール、agent、atom、スレッドセーフなコレクション、同期クラスなどの並行処理プリミティブを提供するRuby gem。 Concurrent Rubyは、Rubyアプリケーション向けに幅広い並行処理の抽象化を提供するgemです。統一されたfuture/promiseフレームワークであるPromisesや、ScheduledTask、TimerTaskなどの非同期処理ツールに加え、Javaに着想を得たスレッドプールや各種executorを備えています。
concurrent-ruby は無料で使えますか?ライセンスは?
concurrent-ruby は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
concurrent-ruby は今もメンテナンスされていますか?
活発にメンテナンス中。concurrent-ruby の最終コミットは 2026年10月16日 です。
concurrent-ruby は何に使えますか?
外部依存を追加せずに、Rubyサービスでバックグラウンドジョブや並列I/Oタスクを実行する。 latch、barrier、semaphoreを使って複数のスレッドを協調させる。 Rubyプロセス内で定期処理や遅延実行をスケジュールする。 atomやスレッドセーフなコレクションを使って、スレッド間でミュータブルな状態を安全に共有する。
concurrent-ruby はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ruby-concurrency/concurrent-ruby

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト