在Ruby中,你可以使用Thread类来实现多线程编程。以下是一个简单的示例,演示如何在Ruby中创建和运行多线程:
# 创建两个线程,分别输出数字和字母
thread1 = Thread.new do
  5.times { |i| puts "Thread 1: #{i}" }
end

thread2 = Thread.new do
  ('A'..'E').each { |letter| puts "Thread 2: #{letter}" }
end

# 等待两个线程完成
thread1.join
thread2.join

puts "Main thread exiting."

在这个例子中,Thread.new 方法创建了两个线程,每个线程执行一些简单的输出操作。join 方法用于等待线程完成,确保在主线程退出之前,所有线程都已经执行完毕。

请注意,在Ruby中,线程共享全局变量和资源,因此在多线程编程中要注意线程安全性,以避免竞态条件和其他并发问题。你可能需要使用互斥锁(Mutex)等同步机制来确保线程安全。
# 使用Mutex确保线程安全
counter = 0
mutex = Mutex.new

threads = []

5.times do
  threads << Thread.new do
    mutex.synchronize do
      100.times { counter += 1 }
    end
  end
end

threads.each(&:join)

puts "Counter value: #{counter}"

在这个例子中,使用Mutex来确保对共享变量counter的访问是线程安全的。 synchronize 方法用于在互斥锁的保护下执行代码块,确保每次只有一个线程可以访问临界区。


转载请注明出处:http://www.zyzy.cn/article/detail/6478/Ruby