Wątki i semafory

0

Siema,
robię obsługę fabryki w czasie rzeczywistym. Gdy na wejściu pojawia się część, po jej zidentyfikowaniu ("a" "b" "c") inkrementuje odpowiedni semafor, dzięki czemu odpalam proces potrzebny do obsługi danej części. Kiedy jednak żaden proces aktualnie tej części nie potrzebuje, część powinna lecieć do recyklingu. W tym miejscu utknąłem, ponieważ wątek recyklingu stoi niejako niżej w chierarchii priorytetowej procesów (dopiero gdy żaden inny proces fabryczny nie potrzebuje części która się pojawiła, leci ona do recyklingu). W jaki sposób to ugryźć?
Z góry dziękuję za wszystkie propozycje
pozdro, BruceLee

0

Albo wyżej ustawić wątek recyklingu i go usypiać kiedy nie jest potrzebny albo usypiać inne wątki a kiedy recykling skończy prace wznawiać je do pracy.
Nie wiem czy dobrze cię zrozumiałem :>.

0

Powiedzmy, że przylatuje część A. Część A może być przetwarzana na maszynie 1 lub maszynie 2. W momencie przybycia obie te maszyny są zajęte, więc część A trafia do recyklingu.
Od strony programowej to wygląda w ten sposób:
przychodzi część->jest identyfikowana jako A->sem_partA.release().
Natomiast wątki maszyn zarówno pierwszej jak i drugiej zaczynają się od sem_partA.acquire() i po tym wykonują się tam z 10sekund.
Nie wiem, w jaki sposób mógłbym tu zastosować usypianie, ale może użycie tej opcji będzie jakąś pomocą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1