Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include "thread.h"
  2. #include "semaphor.h"
  3. #include <iostream.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. Semaphore* mutex = 0;
  8. Semaphore* sleepSem = 0;
  9.  
  10. void tick() {}
  11.  
  12.  
  13. class Znak : public Thread
  14. {
  15. public:
  16.     Znak(char znak, int n) : Thread(), znak(znak), n(n) {}
  17.     virtual ~Znak() { waitToComplete(); }
  18.  
  19.     void run()
  20.     {
  21.         // for (long i = 0; i < 100000; i++)
  22.         for (int i = 0; i < n; i++)
  23.         {
  24.             if (mutex->wait(1)) {
  25.                 cout << znak;
  26.                 mutex->signal();
  27.             }
  28.  
  29.             // for (int j = 0; j < 10000; j++)
  30.                 // for (int k = 0; k < 10000; k++);
  31.             Time sleepTime = 2 + rand() % 8;
  32.             sleepSem->wait(sleepTime);
  33.             // dispatch();
  34.         }
  35.  
  36.         if (mutex->wait(1)) {
  37.             cout << endl << znak << " finished" << endl;
  38.             mutex->signal();
  39.         }
  40.  
  41.     }
  42.  
  43. private:
  44.     char znak;
  45.     int n;
  46.  
  47. };
  48.  
  49.  
  50. int userMain(int argc, char* argv[]) {
  51.     mutex = new Semaphore(1);
  52.     sleepSem = new Semaphore(0);
  53.  
  54.     Znak* a = new Znak('a', 10);
  55.     Znak* b = new Znak('b', 15);
  56.     Znak* c = new Znak('c', 20);
  57.  
  58.     a->start();
  59.     b->start();
  60.     c->start();
  61.  
  62.     delete a;
  63.     delete b;
  64.     delete c;
  65.  
  66.     if (mutex->wait(1)) {
  67.         cout << endl << "userMain finished" << endl;
  68.         mutex->signal();
  69.     }
  70.  
  71.     delete sleepSem;
  72.     delete mutex;
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement