Updates from lab.

This commit is contained in:
shadow8t4 2015-11-06 10:56:20 -06:00
parent 536fdb4aae
commit 8d38960b3f

View file

@ -45,7 +45,7 @@ private:
/* -- INTERNAL DATA STRUCTURES
You may need to change them to fit your implementation. */
int value;
int value;
pthread_mutex_t m;
pthread_cond_t c;
@ -53,18 +53,25 @@ public:
/* -- CONSTRUCTOR/DESTRUCTOR */
Semaphore(int _val){value = _val;}
Semaphore(int _val){
value = _val;
pthread_mutex_init(&m);
pthread_cond_init(&c);
}
~Semaphore(){}
/* -- SEMAPHORE OPERATIONS */
int P(){
int P() {
//This is to lock the Semaphore.
pthread_mutex_lock( &m );
//Wait until condition, basically wait until signaled.
pthread_cond_wait( &c, &m );
--value;
//If counter is negative, wait until condition, basically wait until signaled.
if(value < 0) {
pthread_cond_wait( &c, &m );
}
//Some code here.
@ -72,7 +79,17 @@ public:
pthread_mutex_unlock( &m );
}
//;
int V();
int V() {
pthread_mutex_lock( &m );
++value;
if(value <= 0) {
pthread_cond_signal( &c );
}
pthread_mutex_unlock( &m );
}
};
/*