Struct rs_lockfree::lockfree_queue::LockFreeQueue [−][src]
pub struct LockFreeQueue<T> { /* fields omitted */ }
LockFree queue, implemented based on HazardEpoch
Examples
use rs_lockfree::lockfree_queue::LockFreeQueue; let mut queue = unsafe { LockFreeQueue::default_new_in_stack() }; assert!(queue.pop().is_none()); queue.push(1); assert_eq!(queue.pop().unwrap(), 1); let test_num = 100; for i in 0..test_num { queue.push(i); } for i in 0..test_num { assert_eq!(queue.pop().unwrap(), i); }
Methods
impl<T> LockFreeQueue<T>
[src]
impl<T> LockFreeQueue<T>
pub unsafe fn default_new_in_stack() -> LockFreeQueue<T>
[src]
pub unsafe fn default_new_in_stack() -> LockFreeQueue<T>
Return LockFreeQueue in stack with default setting of HazardEpoch
pub fn default_new_in_heap() -> Box<LockFreeQueue<T>>
[src]
pub fn default_new_in_heap() -> Box<LockFreeQueue<T>>
Return LockFreeQueue in heap with default setting of HazardEpoch
pub fn push(&mut self, v: T)
[src]
pub fn push(&mut self, v: T)
Push an element to the end of current queue
pub fn pop(&mut self) -> Option<T>
[src]
pub fn pop(&mut self) -> Option<T>
Pop the element at the head of current queue
pub unsafe fn destroy(&mut self)
[src]
pub unsafe fn destroy(&mut self)
Trait Implementations
impl<T> Drop for LockFreeQueue<T>
[src]
impl<T> Drop for LockFreeQueue<T>
Auto Trait Implementations
impl<T> !Send for LockFreeQueue<T>
impl<T> !Send for LockFreeQueue<T>
impl<T> !Sync for LockFreeQueue<T>
impl<T> !Sync for LockFreeQueue<T>