<p>The data structure could be named depending on how you implement it.</p>
<div class="s-table-container">
<table class="s-table">
<thead>
<tr>
<th>Producer</th>
<th>Consumer</th>
<th>Reference</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>Multi</td>
<td>Single</td>
<td><a href="https://arxiv.org/abs/2010.14189" rel="nofollow noreferrer">Jiffy: A Fast, Memory Efficient, Wait-Free Multi-Producers Single-Consumer Queue</a></td>
<td>Queue</td>
</tr>
<tr>
<td>Multi</td>
<td>Multi</td>
<td><a href="https://dl.acm.org/doi/10.1145/2695664.2695924" rel="nofollow noreferrer">A scalable multi-producer multi-consumer wait-free ring buffer</a></td>
<td>Ring buffer</td>
</tr>
<tr>
<td>Single</td>
<td>Multi</td>
<td><a href="https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/12OmNxH9XgT/pdf" rel="nofollow noreferrer">FFQ: A Fast Single-Producer/Multiple-ConsumerConcurrent FIFO Queue*</a></td>
<td>Concurrent FIFO Queue</td>
</tr>
</tbody>
</table>
</div>
<p>*  Wait-free interface for producers, Lock-free for consumers</p>
Wait-free put, get data-structure
<p>I am considering concurrent multi-producer multi-consumer data structure that has two methods: <code>success = try_put(elem)</code> and <code>success = try_get(&amp;elem)</code>. I assume that this data structure has a fixed amount of preallocated memory and in case it is full or empty, <code>success</code> boolean flag contains <code>false</code> meaning that the corresponding operation can't be made.</p>
<p>The data structure doesn't enforce any ordering guarantees, so it doesn't matter is it a stack, queue, or something else. Does this data structure has some name in the literature?</p>
<p>Is it possible to make the wait-free implementation of this data structure? Does the presence of constant time atomic operations is required, if yes how they should be used?</p>