マルチスレッド
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)
参考: