在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、实现ruby中的多线程 # def test1 # n = 1 # if n > 10 # puts "test1结束" # else # while true # sleep 2 # puts n # n = n + 1 # end # end # end # # # def test2 # n = 100 # if n > 100 # puts "test2结束" # else # while true # sleep 2 # puts n # n = n + 10 # end # end # end # # t1 = Thread.new{test1()} # t2 = Thread.new{test2()} # # t1.join # t2.join #
ruby的多线程中也是利用queue进行数据的交互和传递,看下下面的例子 $queue = Queue.new def test1 sleep 2 puts "test1" $queue << "test111" end def test2 sleep 4 puts "test2" $queue << "test22222222" end t1 = Thread.new{test1} t2 = Thread.new{test2} t1.join t2.join 2.times do res = $queue.pop puts res end
通过queue对象就可以子线程和主进程之间进行数据交互
定义一个局部变量的queue对象,做数据传递 def test1(queue) sleep 2 puts "test1" queue << "test111111111111111111" end def test2(queue) sleep 4 puts "test2" queue << "test222222222222222" end def test queue = Queue.new t1 = Thread.new{test1(queue)} t2 = Thread.new{test2(queue)} t1.join t2.join 2.times do res = queue.pop puts res end end test
2、实现ruby中的关键字传参,这里要用冒号,而不是等号 def test(a:"a1",b:"b1",c:"c1") puts a puts b puts c end test(a:"a2",c:"c2")
3、ruby中普通参数和关键字参数混合使用 def test1(d,a:"a1",b:"b1",c:"c1") # 这里的普通参数必须要放在前面,放在后面会报错的 puts a puts b puts c puts d end test1(1) test1(1,c:"c2")
4、ruby函数关键字和普通参数混用,传递一个Hash,函数的参数使用传递的值和hash中的值 args = {"a":"a11","b":"b11","c":"c11"} def test2(d,a:"a1",b:"b1",c:"c1") # 这里的普通参数必须要放在前面,放在后面会报错的 puts "test22222222222222" puts a puts b puts c puts d end
5、ruby函数关键字参数和普通参数混用,函数使用默认值和hash两种 args = {"a":"a11","c":"c11"} def test3(d,a:"a1",b:"b1",c:"c1") # 这里的普通参数必须要放在前面,放在后面会报错的 puts "test333333333333" puts a puts b puts c puts d end test3(2,args)
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论