# 创建两个线程,分别输出数字和字母
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