マルチスレッド
ActiveRecord::Base.connection_pool.with_connection
参考:
ActiveRecord をマルチスレッドで使う | EasyRamble
マルチスレッドとかマルチプロセスを実装してみた | 訳も知らないで
Parallel
require 'parallel' Parallel.each((1..10).to_a, in_threads: 2) do |var| ActiveRecord::Base.connection_pool.with_connection do puts "#{var}番 #{User.find(var).id}" end end puts "finish!!"
参考:
grosser/parallel: Ruby: parallel processing made simple and fast – GitHub
並列処理で ActiveRecord の処理時間を短縮する | patorash のブログ
マルチスレッドとかマルチプロセスを実装してみた | 訳も知らないで
ruby で簡単並列処理 (Parallel) – Qiita
Ruby で並列処理を行う parallel gem の使い方と勘所 | ぺけみさお
Mutex
# なんか各スレッドが一つの変数に数字足していく total = 0 locker = Mutex::new Parallel.each((1..10).to_a, in_threads: 2) do |var| ActiveRecord::Base.connection_pool.with_connection do puts "#{var}番 #{User.find(var).id}" # このブロック内は必ず同時に一つのスレッドしか処理しない locker.synchronize do total += var end end end puts total puts "finish!!"
参考:
マルチスレッドとかマルチプロセスを実装してみた | 訳も知らないで
Thread.new
参考:
Rails でアクションをバックグランドタスク的に thread にしてもオッケー? | QA@IT
Queue
参考:
RequestLocals (request_store_rails)
参考: