Ruby on rails 钢轨多线程
我在主线程中创建了一个新线程,并在while循环中运行,直到我的全局变量发生变化。但如果我在主线程中更改全局变量,它不会反映在新线程中。问题是什么Ruby on rails 钢轨多线程,ruby-on-rails,ruby,multithreading,Ruby On Rails,Ruby,Multithreading,我在主线程中创建了一个新线程,并在while循环中运行,直到我的全局变量发生变化。但如果我在主线程中更改全局变量,它不会反映在新线程中。问题是什么 Thread.new do loop do p "login info" p logged mutex.synchronize do if(!logged) break else begin #do something sleep 5 rescue => e
Thread.new do
loop do
p "login info"
p logged
mutex.synchronize do
if(!logged)
break
else
begin
#do something
sleep 5
rescue => e
p e
end
end
end
end
我已在注销方法中将logged设置为false。但循环并没有中断
模块会话助手
记录=错误
#登录给定用户
def登录(用户)
end变量必须定义为$logged=false您可以显示您在哪里定义了logged。
logged
是线程范围的局部变量。您可能希望使用class/instance变量,但这绝对是一个任务。logged是在类级别定义的
session[:user_id] = user[:id]
storeAuthToken(user)
logged=true