Advertisement
Guest User

Untitled

a guest
Aug 28th, 2015
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.58 KB | None | 0 0
  1. void PCB::sleep(Time timeToSleep)
  2. {
  3. if(timeToSleep>0){
  4. PCB::running->state=Blocked;
  5. Sleep *s=new Sleep(PCB::running,timeToSleep);
  6. Sleep *temp=sleepHead, *old=0;
  7. while ((temp!=0)&&(s->time>=temp->time))
  8. {
  9. s->time-=temp->time;
  10. old=temp;
  11. temp=temp->next;
  12. }
  13. if ((sleepHead!=0) && (temp!=0) && (old!=0))
  14. {
  15. old->next=s;
  16. s->next=temp;
  17. temp->time-=s->time;
  18. }
  19. else if(sleepHead==0)
  20. {
  21. sleepHead=s;
  22. }
  23. else if(temp==0)
  24. {
  25. old->next=s;
  26. }
  27. else if(old==0)
  28. {
  29. temp->time-=s->time;
  30. s->next=sleepHead;
  31. sleepHead=s;
  32. }
  33. Timer::requested=1;
  34. }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement