Ruby 多线程学习与实践

  Ruby 多线程
  
  每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。
  
  线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。
  
  Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码。
  
  创建 Ruby 线程
  
  要启动一个新的线程,只需要调用 Thread.new 即可:
  
  # 线程 #1 代码部分
  
  Thread.new {
  
  # 线程 #2 执行代码
  
  }
  
  # 线程 #1 执行代码
  
  实例
  
  以下实例展示了如何在Ruby程序中使用多线程:
  
  #!/usr/bin/ruby
  
  def func1
  
  i=0
  
  while i<=2
  
  puts "func1 at: #{Time.now}"
  
  sleep(2)
  
  i=i+1
  
  end
  
  end
  
  def func2
  
  j=0
  
  while j<=2
  
  puts "func2 at: #{Time.now}"
  
  sleep(1)
  
  j=j+1
  
  end
  
  end
  
  puts "Started At #{Time.now}"
  
  t1=Thread.new{func1()}
  
  t2=Thread.new{func2()}
  
  t1.join
  
  t2.join
  
  puts "End at #{Time.now}"
  
  以上代码执行结果为:
  
  Started At Wed May 14 08:21:54 -0700 2014
  
  func1 at: Wed May 14 08:21:54 -0700 2014
  
  func2 at: Wed May 14 08:21:54 -0700 2014
  
  func2 at: Wed May 14 08:21:55 -0700 2014
  
  func1 at: Wed May 14 08:21:56 -0700 2014
  
  func2 at: Wed May 14 08:21:56 -0700 2014
  
  func1 at: Wed May 14 08:21:58 -0700 2014
  
  End at Wed May 14 08:22:00 -0700 2014
  
  线程生命周期
  
  1、线程的创建可以使用Thread.new,同样可以以同样的语法使用Thread.start 或者Thread.fork这三个方法来创建线程。
  
  2、创建线程后无需启动,线程会自动执行。
  
  3、Thread 类定义了一些方法来操控线程。线程执行Thread.new中的代码块。
  
  4、线程代码块中最后一个语句是线程的值,可以通过线程的方法来调用,如果线程执行完毕,则返回线程值,否则不返回值直到线程执行完毕。
  
  5、Thread.current 方法返回表示当前线程的对象。 Thread.main 方法返回主线程。
  
  6、通过 Thread.Join 方法来执行线程,这个方法会挂起主线程,直到当前线程执行完毕。

猜你喜欢

转载自www.cnblogs.com/luoshenzhiy/p/12892372.html