/** * Moves thread with given id to blocked list. * Has no effect on blocked threads. */ void PriorityQueue::block(int id) { int location = -1; vector<Thread *> * point = findInQueue(id , location); if (location != -1) { _Blocked.push_back(point->at(location)); point->erase(point->begin() + location); } }
void PriorityQueue::removeElement(int id) { int location = -1; vector<Thread * > * point = findInQueue(id , location); if (location == -1) { location = findElement(id , _Blocked); if (location != -1) { point = &_Blocked; } } if (location != -1) { point->erase(point->begin() + location); decreaseSize(); } return; }
StateChange * StateChanges::get(state from) { StateChange * ret = NULL; states::iterator sq = findInQueue(from); if(sq!=scq.end()){ (*sq)->inc(); ret = *sq; upgrade(sq); return ret; } states::iterator s = find(from); if(s!=sc.end()){ (*s)->inc(); StateChange * ss = (*s); ret = ss; sc.erase(s); insertSorted(ss); } return ret; }