Ruby多线程库(Thread)使用方法详解
1. 简介
Thread
是 Ruby 内置的多线程库,它允许程序员在同一个程序中同时执行多个线程。多线程是一种并发编程模型,它允许程序同时执行多个任务,提高了程序的效率。
2. Thread
基本用法
2.1 创建线程
thread = Thread.new do
# 在新的线程中执行的代码
end
2.2 设置线程名称
thread = Thread.new do
# 在新的线程中执行的代码
end
thread.name = 'MyThread'
2.3 等待线程结束
thread = Thread.new do
sleep 5
puts "Thread is done"
end
thread.join
2.4 停止线程
thread = Thread.new do
while true do
puts "Running..."
end
end
# 停止线程
thread.kill
3. 其他用法
3.1 线程池
threads = []
10.times do
threads << Thread.new do
# 在新的线程中执行的代码
end
end
# 等待所有线程结束
threads.each { |t| t.join }
3.2 线程间通信
queue = Queue.new
producer = Thread.new do
10.times do |i|
sleep 1
queue << "Message #{i}"
puts "Produced message #{i}"
end
end
consumer = Thread.new do
10.times do |i|
message = queue.pop
puts "Consumed message #{message}"
end
end
# 等待线程结束
producer.join
consumer.join
4. 示例说明
4.1 示例一
在下面的代码示例中,我们将使用 Thread
创建两个线程,一个线程显示 "Hello",另一个线程显示 "World",最后在主线程中等待这两个线程执行完毕:
thread1 = Thread.new do
5.times do
sleep 1
puts "Hello"
end
end
thread2 = Thread.new do
5.times do
sleep 1
puts "World"
end
end
thread1.join
thread2.join
4.2 示例二
在下面的代码示例中,我们将使用 Thread
创建一个线程池,每个线程任务是计算从 1 到 100 的和,最后在主线程中等待所有线程任务执行完毕,并将每个线程的计算结果输出:
threads = []
10.times do |i|
threads << Thread.new do
sum = (1..100).inject(:+)
puts "Thread #{i + 1} sum: #{sum}"
end
end
threads.each { |t| t.join }
5. 总结
Thread
是 Ruby 内置的多线程库,它允许程序员在同一个程序中同时执行多个线程。使用 Thread
可以提高程序的效率,但是多线程编程也会增加程序的复杂度和易错性,需要注意线程间的同步和互斥。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ruby多线程库(Thread)使用方法详解 - Python技术站