创建n个线程并将其连接到主线程,并在ruby中监视它们的状态
我有一个任务,现在是控制器的def。我想根据用户输入的数量创建n个线程。 如何在ruby中创建动态数量的线程,并在主线程处连接和监视它们 def validate_save创建n个线程并将其连接到主线程,并在ruby中监视它们的状态,ruby,multithreading,Ruby,Multithreading,我有一个任务,现在是控制器的def。我想根据用户输入的数量创建n个线程。 如何在ruby中创建动态数量的线程,并在主线程处连接和监视它们 def validate_save upload_thread =[] @counter = 1 params.each do |param_name,param_value| if param_name.include? "file" Rails.logger.debug("making a thread")
upload_thread =[]
@counter = 1
params.each do |param_name,param_value|
if param_name.include? "file"
Rails.logger.debug("making a thread")
Rails.logger.debug(@counter)
Rails.logger.debug(param_name)
Rails.logger.debug(param_value)
Rails.logger.debug(param_value.original_filename)
upload_thread << Thread.new(@counter) do
sleep 1
Rails.logger.debug("inside Thread:")
Rails.logger.debug(@counter)
if S3.upload_file(param_value)
Rails.logger.debug('we can save into S3')
#flash[:successful]="Successfully Uploaded : "+params[:file].original_filename
else
#flash[:unsuccessful]="UnSuccessful Upload of : "+params[:file].original_filename
Rails.logger.debug('can not save into S3')
end
end
@counter = @counter + 1
end
end
upload_thread.each do |up_th|
up_th.join
end
upload_-thread=[]
@计数器=1
参数。每个do |参数名称、参数值|
如果参数name.include?“文件”
调试(“生成线程”)
Rails.logger.debug(@counter)
Rails.logger.debug(参数名称)
Rails.logger.debug(参数值)
Rails.logger.debug(参数值.原始文件名)
上传内容太模糊,无法回答。你说的“监视器”是什么意思?线程应该做什么?线程的数量是如何具体地由“用户输入的数量”产生的?你可以用threads=1000.times{Thread.new}
生成一堆线程,但答案和你的问题一样模糊。我正在使用每个线程上载一个文件,数量取决于userw.r.t浏览到我最近编辑的文件的数量,是否有一种方法可以将此任务委托给另一个类,就像我们在Java中所做的那样。为了加入它们,您可以使用ThreadWait.all\u wait(*upload\u thread)
。至于“委托”问题,您总是可以子类化线程
,但这在Ruby中并不常见<代码>线程.new(@counter){| counter | UploadHandler.new(counter.run}
将是我建议的方法。