16.11. Implementacja rozproszonej kolejki
Podziękowania dla Jamesa Edwarda Graya II
Problem
Chcemy wykorzystać centralny serwer do kolejkowania żądań od zdalnych klientów i obsługiwania ich pojedynczo.
Rozwiązanie
Poniżej zamieszczono metodę, która umożliwia współdzielenie obiektu Queue
pomiędzy klientami. Klienty umieszczają obiekty zadań w kolejce, a serwer obsługuje je poprzez przekazywanie do bloku kodowego.
#!/usr/bin/ruby # queue_server.rb require 'thread' # W celu obsługi klasy Queue zapewniającej bezpieczeństwo wątków require 'drb' $SAFE = 1 # Minimalny dopuszczalny poziom bezpieczeństwa podczas # współdzielenia kodu! def run_queue(url='druby://127.0.0.1:61676') queue = Queue.new # Kolejka zawierająca zadania do przetworzenia ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.