ruby小例子-动态执行,绑定,线程

#encoding:utf-8
# ---------动态执行
#执行2 + 2
puts eval "2 + 2"
#=》4
#执行15 * 2 (Q表示双引号会进行运算,q表示单引号会原样输出)
number = 15
code = %Q{#{number} * 2}
puts code
puts eval(code)
#=》4
#=》#{number} * 2

# ---------绑定
def binding_test
  return binding
end
binding_function = binding_test
x = 9
eval("x = 10")
eval("x = 50", binding_function)
#处理当前环境的局部变量
eval("puts x")
#处理binding环境的局部变量
eval("puts x", binding_function)


#exec "data.rb"
#puts "end"
#ruby的线程不是由操作系统来提供,由ruby解释器来执行
#优点:跨平台性能很好
#缺点:如果需要调用操作系统并等待回应,则整个ruby程序就会暂停

#新开线程
child = fork do
  sleep 1
  puts "child ok"
end
puts "waiting for child process"
Process.wait child
puts "end"

#线程
#创建10个线程随机睡眠,打印 
threads = []
10.times do
  thread = Thread.new do
    10.times {|i| 
      print i
      $stdout.flush
      #转让线程执行权
      Thread.pass
      sleep 1
      }
  end
  threads <<thread
end
puts Thread.list.inspect
#join让主线程等待至线程执行完毕
threads.each() do |thread|
  thread.join(3)
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值