Ответ 1
Как реализовать очередь с использованием двух стеков? объясняет больше и имеет некоторый код.
Если вы сделаете это на низком уровне, у вас будут две области памяти и два указателя Один указатель увеличивается, когда вы пишете, а другой, когда вы читаете
Как только область чтения будет испорчена, вы меняете область записи и меняете ее.
Таким образом, нет никаких шансов, что чтение будет мешать написанию и наоборот. Единственное соединение между двумя операциями - во время операции "обратное и своп", и тогда каждый должен ждать.