• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ruby中的多线程和函数的关键字传参

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ruby编程语言-学习笔记2(第4章表达式和操作符)发布时间:2022-07-14
下一篇:
centos7/rhel7安装较高版本ruby2.2/2.3/2.4+发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap