Skip to content
Snippets Groups Projects
ProducerConsumerQueue.h 749 B
Newer Older
benbergk's avatar
benbergk committed
//
// Created by Ben Bergkamp on 1/25/18.
//

#ifndef EECS398_SEARCH_PRODUCERCONSUMERQUEUE_H
#define EECS398_SEARCH_PRODUCERCONSUMERQUEUE_H

benbergk's avatar
benbergk committed
#include <queue>
#include <pthread.h>
benbergk's avatar
benbergk committed
//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
benbergk's avatar
benbergk committed
//Necessary because this class is templated
#include"ProducerConsumerQueue.cpp"
benbergk's avatar
benbergk committed

#endif //EECS398_SEARCH_PRODUCERCONSUMERQUEUE_H