Похоже, вы описываете потокобезопасный стек или очередь. Выполнение веб-поиска для термина «потокобезопасный» может помочь вам начать работу.
Как правило, вы защищаете свой массив мьютексом: мьютекс разблокируется по умолчанию, и когда поток обращается (изменяет или читает) к структуре, он сначала блокирует мьютекс, выполняет его модификации и разблокирует мьютекс. Если другому потоку необходим доступ к структуре данных, пока мьютекс заблокирован, он будет блокироваться до тех пор, пока поток, который заблокировал мьютекс, не разблокирует его.