Ruby 協程(Coroutine)是一種輕量級的線程,可以在單個線程中實現多個任務的并發執行。協程可以讓你更簡潔地編寫異步或多任務處理的代碼,從而簡化編程。
在 Ruby 中,可以使用 Fiber
類來創建和管理協程。以下是一些使用 Ruby 協程簡化編程的示例:
Fiber
創建協程:def my_coroutine(name)
puts "#{name} 開始執行"
Fiber.yield
puts "#{name} 執行完畢"
end
fiber1 = my_coroutine("協程1")
fiber2 = my_coroutine("協程2")
fiber1.resume
fiber2.resume
Concurrent::Fiber
(Ruby 3.0+ 引入):require 'concurrent'
def my_coroutine(name)
puts "#{name} 開始執行"
Concurrent::Fiber.yield
puts "#{name} 執行完畢"
end
fiber1 = my_coroutine("協程1")
fiber2 = my_coroutine("協程2")
fiber1.resume
fiber2.resume
async
和 await
(Ruby 3.0+ 引入):require 'async'
async def my_coroutine(name)
puts "#{name} 開始執行"
await Concurrent::Promise.new
puts "#{name} 執行完畢"
end
[my_coroutine("協程1"), my_coroutine("協程2")].each(&:await)
這些示例展示了如何使用 Ruby 協程簡化多任務處理的編程。通過使用協程,你可以更輕松地實現異步操作,避免回調地獄(Callback Hell),并提高代碼的可讀性和可維護性。