-2

我的問題是:我有一個工作表,每個工作都有一個線程啓動。在這些線程中,他們進行一些處理併發送短信並等待2分鐘。這是最長的時間。現在,如果用戶響應短信,那麼我想中斷相應的線程來完成剩餘的處理。如何在Ruby on Rails中實現多線程?以及如何獲取線程來殺死或喚醒它?

那麼有什麼我可以通過名稱或編號從列表中找到線程?

+0

這個問題太含糊。您通過使用多個線程實現多線程,並使用Thread.list獲取線程。但我懷疑這不會回答你的問題。 – 2014-10-16 18:30:03

+0

Thread.list給出了完整的線程列表。 我的問題是: 我有一個工作表,每個工作一個線程啓動。 在這些線程中,他們進行一些處理併發送短信並等待2分鐘。這是最長的時間。 現在,如果用戶響應短信,那麼我想中斷相應的thead來完成其餘的處理。 – 2014-10-16 18:36:01

+0

你應該考慮使用不同的設計;而不是保留線程,存儲啓動作業時所需的狀態,然後在響應SMS時發出「完成此任務」作業。您現有的設計不會超過一個實例,並且容易受到國家損失。 – 2014-10-16 18:49:45

回答

0

我想你可以參考這個答案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 

如果計時器到期,則其發送給下一個人。