假设我有一个方法,其中包括一个计数器,该计数器在每个刻度上都将其计数输出到屏幕上。在程序的其他地方,都调用了此方法的新版本,因此它们都可以同时运行,具有不同的计数器并与刻度一起更新。Ruby可以做到这一点吗?通常,创建对象的另一个实例是我要做的事情,尽管我对Ruby还是陌生的,但仍然难以捉摸。
我将使用稍后要实现的示例代码进行编辑。我目前在移动设备上,无法访问计算机。
在这里,我创建两个的实例Counter
,两个计数器最初都设置为0。然后我将它们分开3秒启动它们-每个都在自己的线程中。他们开始打印数字。
class Counter
def initialize
@counter = 0 # initial counter to 0
end
def run
loop do
# wait one second, print the counter and increase it
sleep 1
puts @counter
@counter += 1
end
end
end
threads = []
2.times do
# put each counter in a separate thread
threads << Thread.new do
counter = Counter.new
counter.run
end
sleep 3 # make a pause between launching counters
end
threads.each(&:join)
我得到的输出:
0 # first
1 # first
2 # first
0 # second
3 # first
1 # second
4 # first
2 # second
5 # first
这里唯一的技巧是使用Thread
类,否则第二个计数器将永远不会开始工作,因为第一个计数器将阻塞整个过程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句