20.3. Wykonywanie dwóch operacji jednocześnie z wykorzystaniem wątków

Problem

Chcemy, aby program równolegle realizował dwa fragmenty kodu.

Rozwiązanie

Należy utworzyć nowy wątek poprzez przekazanie bloku kodu do metody Thread.new. Przekazany blok uruchomi się równolegle z kodem zamieszczonym za wywołaniem metody Thread.new.

W poniższym kodzie zamieszczono dwa rywalizujące ze sobą wątki. Jeden z nich zmniejsza zmienną o jeden, natomiast wątek głównego programu zwiększa tę samą zmienną o trzy. Wątek zmniejszający zmienną rozpoczyna pracę wcześniej, ale wątek zwiększający zmienną zawsze wygrywa, ponieważ zwiększa licznik o większą wartość:

x = 0 Thread.new do while x < 5 x -= 1 puts "DEKREMENTACJA: Zmniejszyłem zmienną x do wartości ...

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.