blob: c1a309b8817f7c0e214c68eb87228b047bb6537f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#ifndef LOCK_FREE_QUEUE_H
#define LOCK_FREE_QUEUE_H
#include "spin_lock.h"
class lock_free_queue_node {
public:
lock_free_queue_node *next;
lock_free_queue_node();
};
class lock_free_queue : lock_free_queue_node {
spin_lock lock;
lock_free_queue_node *_tail;
public:
lock_free_queue();
void enqueue(lock_free_queue_node *item);
lock_free_queue_node *dequeue();
bool is_empty();
};
#endif /* LOCK_FREE_QUEUE_H */
|