您的位置:首页 > 编程语言 > Ruby

ruby线程操作

2015-11-03 12:32 501 查看
线程创建

thread=Thread.new  do
线程块
end
如:

thread=Thread.new  do
puts "HelloWorld"
end

线程并发执行

i=1
Thread.new 10 do |value|
while i<value
puts "#{i}"
i+=1
end
end
Thread.new do
10.times do |a|
puts "第#{a+1}次输出"
end
end
线程是交互执行的。

线程除了用Thread.new创建外还可以用start和fork创建

thread=Thread.start "hello" do |value|
puts"我是用的start方法创建的线程+#{value}"
end
thread=Thread.fork "word" do |value|
puts"我是用的fork方法创建的线程+#{value}"
end


使用join方法可以挂起当前进程,然后指定执行的进程

i=1
threadjoin1=Thread.new 10 do |value|
while i<value
puts"#{i}"
i+=1
end
end
threadjoin1.join
threadjoin2=Thread.new do
10.times do |a|
puts"第#{a+1}次输出"
end
end
threadjoin2.joinf上面代码中,进程1执行完就挂起然后执行进程2,依次执行,不会交替执行。
ruby中除了join外使用value方法也可以挂起,而且使用value还可以获得线程的值

i=1
threadjoin1=Thread.new 10 do |value|
while i<value
puts"#{i}"
i+=1
end
end
threadjoin1.value
threadjoin2=Thread.new do
10.times do |a|
puts"第#{a+1}次输出"
end
end
threadjoin2.join
puts"线程threadjoin2的值是"+threadjoin2.value.to_s

执行结果如下:
1
2
3
4
5
6
7
8
9
第1次输出
第2次输出
第3次输出
第4次输出
第5次输出
第6次输出
第7次输出
第8次输出
第9次输出
第10次输出
线程threadjoin2的值是10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: