-2
我的問題是:我有一個工作表,每個工作都有一個線程啓動。在這些線程中,他們進行一些處理併發送短信並等待2分鐘。這是最長的時間。現在,如果用戶響應短信,那麼我想中斷相應的線程來完成剩餘的處理。如何在Ruby on Rails中實現多線程?以及如何獲取線程來殺死或喚醒它?
那麼有什麼我可以通過名稱或編號從列表中找到線程?
我的問題是:我有一個工作表,每個工作都有一個線程啓動。在這些線程中,他們進行一些處理併發送短信並等待2分鐘。這是最長的時間。現在,如果用戶響應短信,那麼我想中斷相應的線程來完成剩餘的處理。如何在Ruby on Rails中實現多線程?以及如何獲取線程來殺死或喚醒它?
那麼有什麼我可以通過名稱或編號從列表中找到線程?
我想你可以參考這個答案Making a timer in Ruby
user_input = Thread.new do
print "Enter something: "
Thread.current[:value] = gets.chomp
end
timer = Thread.new { sleep 3; user_input.kill; puts }
user_input.join
if user_input[:value]
puts "User entered #{user_input[:value]}"
else
puts "Timer expired"
end
如果計時器到期,則其發送給下一個人。
這個問題太含糊。您通過使用多個線程實現多線程,並使用Thread.list獲取線程。但我懷疑這不會回答你的問題。 – 2014-10-16 18:30:03
Thread.list給出了完整的線程列表。 我的問題是: 我有一個工作表,每個工作一個線程啓動。 在這些線程中,他們進行一些處理併發送短信並等待2分鐘。這是最長的時間。 現在,如果用戶響應短信,那麼我想中斷相應的thead來完成其餘的處理。 – 2014-10-16 18:36:01
你應該考慮使用不同的設計;而不是保留線程,存儲啓動作業時所需的狀態,然後在響應SMS時發出「完成此任務」作業。您現有的設計不會超過一個實例,並且容易受到國家損失。 – 2014-10-16 18:49:45