gpt4 book ai didi

ruby - 在 Ruby 中制作一个计时器

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:57 44 4
gpt4 key购买 nike

我想在 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

这段代码中运行了三个线程:

  1. user_input 线程,它从用户那里获取一个字符串并设置它的value 线程变量
  2. timer 线程,它休眠三秒钟,然后杀死 user_input 线程
  3. 主线程,生成另外两个线程,然后等待 user_input 线程完成

如果没有 timer 线程,代码看起来就像单线程代码一样工作,提示用户输入然后继续。两个线程的执行使用#join 序列化。主线程通过查看 user_inputvalue 线程变量获取用户交互的结果。

添加 timer 线程会导致 user_input 线程提前终止(在本例中为 3 秒)。当发生这种情况时,user_input 线程没有设置它的 value 线程变量,因此当主线程向它询问这个变量时返回 nil。这就是主线程如何确定 user_input 是由于接受用户输入而终止,还是被 timer 线程杀死。

关于ruby - 在 Ruby 中制作一个计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250517/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com