// // Created by Ben Bergkamp on 1/25/18. // #ifndef EECS398_SEARCH_PRODUCERCONSUMERQUEUE_H #define EECS398_SEARCH_PRODUCERCONSUMERQUEUE_H #include <queue> #include <pthread.h> //for now use STL queue, create better one later template <class T> class ProducerConsumerQueue { private: std::queue<T> queue; pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t consumer_cv = PTHREAD_COND_INITIALIZER; public: ProducerConsumerQueue() {} void Push(T obj); T Pop(); size_t Size(); //Right now these pass objects by value but // probably should pass pointers in future }; //Necessary because this class is templated #include"ProducerConsumerQueue.cpp" #endif //EECS398_SEARCH_PRODUCERCONSUMERQUEUE_H