1 #ifndef _THREADSAFEQUEUE_H_
2 #define _THREADSAFEQUEUE_H_
10 #include <condition_variable>
21 int Pop(T& output,
int millisecond_wait = 1000);
45 : max_queue_size(10000),
46 items_in_queue(0), items_pushed(0), items_popped(0) { }
53 std::unique_lock<std::mutex> lock(mutex);
54 if(queue.size() > max_queue_size){
67 std::unique_lock<std::mutex> lock(mutex);
69 can_pop.wait_for(lock, std::chrono::milliseconds(millisecond_wait));
76 output = queue.front();
82 can_push.notify_one();
88 std::unique_lock<std::mutex> lock(mutex);
89 return items_in_queue;
94 std::unique_lock<std::mutex> lock(mutex);
100 std::unique_lock<std::mutex> lock(mutex);