<trclass="memdesc:a0c790ba6a203092fa8f15297dcb5b1d6"><tdclass="mdescLeft"> </td><tdclass="mdescRight">constructs the queue with a given capacity <ahref="#a0c790ba6a203092fa8f15297dcb5b1d6">More...</a><br/></td></tr>
<trclass="memdesc:adc85682657a3cd6c0fe87a71d350036c"><tdclass="mdescLeft"> </td><tdclass="mdescRight">queries if the queue is empty at the time of this call <br/></td></tr>
<trclass="memdesc:ab5fe261361a29226f52e6a5eb6351d38"><tdclass="mdescLeft"> </td><tdclass="mdescRight">queries the number of items at the time of this call <br/></td></tr>
<trclass="memdesc:aa24605d46953ae1d27dd35451c72c9b3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">queries the capacity of the queue <br/></td></tr>
<trclass="memitem:aa54d323bb06b310e133820b60b3379fb"><tdclass="memTemplParams" colspan="2">template<typename O > </td></tr>
<trclass="memitem:aa54d323bb06b310e133820b60b3379fb"><tdclass="memTemplItemLeft" align="right" valign="top">void </td><tdclass="memTemplItemRight" valign="bottom"><aclass="el" href="classtf_1_1WorkStealingQueue.html#aa54d323bb06b310e133820b60b3379fb">push</a> (O &&item)</td></tr>
<trclass="memdesc:aa54d323bb06b310e133820b60b3379fb"><tdclass="mdescLeft"> </td><tdclass="mdescRight">inserts an item to the queue <ahref="#aa54d323bb06b310e133820b60b3379fb">More...</a><br/></td></tr>
<trclass="memitem:a1ba75ce446b149de97e62310851a243d"><tdclass="memItemLeft" align="right" valign="top">std::optional< T > </td><tdclass="memItemRight" valign="bottom"><aclass="el" href="classtf_1_1WorkStealingQueue.html#a1ba75ce446b149de97e62310851a243d">pop</a> ()</td></tr>
<trclass="memdesc:a1ba75ce446b149de97e62310851a243d"><tdclass="mdescLeft"> </td><tdclass="mdescRight">pops out an item from the queue <ahref="#a1ba75ce446b149de97e62310851a243d">More...</a><br/></td></tr>
<trclass="memitem:a6b63dca550a2f576b92f05bdc2e03a74"><tdclass="memItemLeft" align="right" valign="top">std::optional< T > </td><tdclass="memItemRight" valign="bottom"><aclass="el" href="classtf_1_1WorkStealingQueue.html#a6b63dca550a2f576b92f05bdc2e03a74">steal</a> ()</td></tr>
<trclass="memdesc:a6b63dca550a2f576b92f05bdc2e03a74"><tdclass="mdescLeft"> </td><tdclass="mdescRight">steals an item from the queue <ahref="#a6b63dca550a2f576b92f05bdc2e03a74">More...</a><br/></td></tr>
<p>This class implements the work stealing queue described in the paper, "Dynamic Circular Work-stealing Deque," SPAA, 2015. Only the queue owner can perform pop and push operations, while others can steal data from the queue.</p>
<p>PPoPP implementation paper "Correct and Efficient Work-Stealing for Weak Memory Models" <ahref="https://www.di.ens.fr/~zappa/readings/ppopp13.pdf">https://www.di.ens.fr/~zappa/readings/ppopp13.pdf</a></p>
</div><h2class="groupheader">Constructor & Destructor Documentation</h2>
<tdclass="memname"><aclass="el" href="classtf_1_1WorkStealingQueue.html">tf::WorkStealingQueue</a>< T >::<aclass="el" href="classtf_1_1WorkStealingQueue.html">WorkStealingQueue</a></td>
<tdclass="memname">std::optional< T > <aclass="el" href="classtf_1_1WorkStealingQueue.html">tf::WorkStealingQueue</a>< T >::pop </td>
<td>(</td>
<tdclass="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><divclass="memdoc">
<p>pops out an item from the queue </p>
<p>Only the owner thread can pop out an item from the queue. The return can be a <ahref="https://en.cppreference.com/w/cpp/utility/optional/nullopt">std::nullopt</a> if this operation failed (empty queue). </p>
<tdclass="memname">std::optional< T > <aclass="el" href="classtf_1_1WorkStealingQueue.html">tf::WorkStealingQueue</a>< T >::steal </td>
<td>(</td>
<tdclass="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><divclass="memdoc">
<p>steals an item from the queue </p>
<p>Any threads can try to steal an item from the queue. The return can be a <ahref="https://en.cppreference.com/w/cpp/utility/optional/nullopt">std::nullopt</a> if this operation failed (not necessary empty). </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>