Черги без блокування можуть бути реалізовані для випадку одного виробника / одного споживача, і часто ви можете архітектуру свого програмного забезпечення, щоб мінімізувати кількість черг з декількома виробниками або кількома споживачами.
Черга без блоку може бути побудована так: Виділіть масив елементів, які слід передавати, а також два цілі числа, назвіть їх Head та Tail. Head - це індекс в масив, куди буде доданий наступний елемент. Хвіст - це індекс у масиві, з якого наступний елемент доступний для видалення. Завдання виробника зчитує H і T, щоб визначити, чи є можливість додати предмет; записує товар в індекс Н, потім оновлює H. Споживчі завдання зчитують Н і Т, щоб визначити, чи є доступні дані, зчитують дані з індексу Т, а потім оновлюють Т. В основному це буфер кільця, до якого звертаються дві задачі, і Порядок операцій (вставте, потім оновіть H; видаліть, потім оновіть T) забезпечує запобігання пошкодження даних.
Якщо у вас є ситуація з кількома виробниками та одним споживачем, або одним виробником та кількома споживачами, у вас фактично є обмеження ресурсів, і для цього немає нічого іншого, як використовувати синхронізацію, оскільки швидше обмежувач продуктивності бути одиноким виробником / споживачем, ніж накладні операційні системи з механізмом блокування.
Але якщо у вас є кілька виробників І споживачів, варто витратити час (у дизайнерському просторі), щоб побачити, чи не можете ви отримати більш узгоджений механізм зв'язку; у такому випадку, серіалізація всього за допомогою однієї черги, безумовно, робить ефективність черги центральним визначальним показником продуктивності.