Kolejki bez blokady można wdrożyć w przypadku pojedynczego producenta / pojedynczego konsumenta, a często można tak zaprojektować oprogramowanie, aby zminimalizować liczbę kolejek wielu producentów lub wielu konsumentów.
Kolejkę bez blokady można tak skonstruować: Przydziel tablicę elementów, które mają być komunikowane, a także dwie liczby całkowite, nazywaj je Głową i Ogonem. Head jest indeksem w tablicy, do którego zostanie dodany następny element. Ogon jest indeksem w tablicy, w którym można usunąć następny element. Zadanie producenta odczytuje H i T, aby ustalić, czy jest miejsce na dodanie elementu; zapisuje element w indeksie H, a następnie aktualizuje H. Zadania konsumenta odczytują H i T, aby ustalić, czy są dostępne dane, odczytują dane z indeksu T, a następnie aktualizują T. Zasadniczo jest to bufor pierścieniowy, do którego dostęp mają dwa zadania, a kolejność operacji (wstaw, następnie zaktualizuj H; usuń, a następnie zaktualizuj T) zapewnia, że nie nastąpi uszkodzenie danych.
Jeśli masz sytuację z wieloma producentami i jednym konsumentem lub z jednym producentem i wieloma konsumentami, faktycznie masz pewnego rodzaju ograniczenie zasobów i nie pozostaje nic innego, jak korzystać z synchronizacji, ponieważ ograniczenie wydajności jest bardziej prawdopodobne być samotnym producentem / konsumentem niż narzut systemu operacyjnego z mechanizmem blokującym.
Ale jeśli masz wielu producentów ORAZ konsumentów, warto poświęcić czas (w przestrzeni projektowej), aby sprawdzić, czy nie możesz uzyskać bardziej skoordynowanego mechanizmu komunikacji; w takim przypadku, szeregowanie wszystkiego za pomocą pojedynczej kolejki zdecydowanie sprawia, że wydajność kolejki jest głównym wyznacznikiem wydajności.