/*
File: semaphore.H
Author: R. Bettati
Department of Computer Science
Texas A&M University
Date : 08/02/11
*/
#ifndef _semaphore_H_ // include file only once
#define _semaphore_H_
/*--------------------------------------------------------------------------*/
/* DEFINES */
/* -- (none) -- */
/* INCLUDES */
#include <pthread.h>
//#include <mutex>
/* DATA STRUCTURES */
/* FORWARDS */
/* CLASS S e m a p h o r e */
class Semaphore {
private:
/* -- INTERNAL DATA STRUCTURES
You may need to change them to fit your implementation. */
int value;
pthread_mutex_t m;
pthread_cond_t c;
public:
/* -- CONSTRUCTOR/DESTRUCTOR */
Semaphore(int _val){value = _val;}
~Semaphore(){}
/* -- SEMAPHORE OPERATIONS */
int P(){
//This is to lock the Semaphore.
pthread_mutex_lock( &m );
//Wait until condition, basically wait until signaled.
pthread_cond_wait( &c, &m );
//Some code here.
//Unlock the Semaphore.
pthread_mutex_unlock( &m );
}
//;
int V();
};
class BoundBuffer{
Semaphore full(n);
Semaphore empty(n);
Semaphore mutex(n);
#endif