【发布时间】:2023-04-01 00:18:01
【问题描述】:
我有一个类和属性
class Person
attr_accessor :name
def say_hello
puts "person name #{self.name} "
end
end
现在我想用这个线程执行 say_hello 方法
queue_thread= []
1..100.times do |number|
person= Person.new
person.name= number.to_s
thread_to_run=Thread.new {person.say_hello}
queue_thread << thread_to_run
end
queue_thread.map {|thread_current| thread_current.join}
你知道怎么做吗?我看了看,问题是线程无法通过对象实例识别变量。
正确的答案应该是控制台中的这个
"person name 1"
"person name 2"
"person name ..."
"person name etc"
【问题讨论】:
-
你得到了什么?需要注意的是,多个线程同时写入控制台是一种混淆事物的好方法。一个线程应该处理输出。
-
感谢回答,我又编辑了,需要通过控制台获取人名1、人名2、人名3。你能帮帮我吗?
-
如果你需要这个顺序,线程会把事情搞砸。你为什么要穿线?您需要以某种方式收集该输出并在显示之前进行排序。
标签: ruby-on-rails ruby multithreading rubygems