在Ruby中制作计时器
我想在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
这段代码中运行了三个线程:
-
user_input
线程,它从用户获取一个字符串并设置其value
线程变量 -
timer
线程,它hibernate三秒钟,然后杀死user_input
线程 - 主线程,它产生另外两个,然后等待
user_input
线程完成
如果没有timer
线程,代码看起来就像单线程一样,提示用户输入然后继续。 使用#join序列化两个线程的执行。 主线程通过查看user_input
的value
线程变量来获取用户交互的结果。
添加timer
线程会导致user_input
线程提前终止(在这种情况下为3秒)。 发生这种情况时, user_input
线程没有设置其value
线程变量,因此当主线程询问此变量时返回nil。 这是主线程如何确定user_input
是否因为接受来自用户的输入而被终止,或者被timer
线程杀死。
有人想这样吗?
puts "In how many Seconds you want me to beep?" t = gets.to_i sleep t puts "\a WAKE UP!"
我的方式 :
comt = 0 while (comt < 10) sleep(1) comt = comt +1 puts comt end#while
那个显示:1 2 3 ... 10
- 无法使用rautomation找到系统弹出按钮
- 单表inheritance查找问题
- rails helper方法如何:attribute_changed? 在Rails 3.2.15中有效吗?
- ruby – 以下数组和目标和代码有什么问题?
- 如何在1.9.2上安装SystemTimer?
- rails union hack,如何将两个不同的查询拉到一起
- Rails4:多个控制器共享的方法
- ActionController :: RoutingError(UserAccountsController的未定义方法`load_and_authorize_resource’:Class):
- 有没有解决方案绕过’迭代过程中无法将新密钥添加到哈希(RuntimeError)’?