Advertisement
FR4GG13

[PPR][7.03] listing2

Mar 7th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <iostream>
  3. #include <boost/thread/thread.hpp>
  4. //mutex = mutual exclusion - umozliwia szeregowanie dostepu do wspolnych zasobow
  5. #include <boost/thread/mutex.hpp>
  6.  
  7. using namespace std;
  8. using namespace boost;
  9.  
  10.  
  11. const int opoznienie=100;
  12.  
  13. //liczba zadan do wykonania przez watki
  14. //***licznik jest WSPOLNY dla wszystkich wątkow***
  15. int licznik=50;
  16.  
  17. mutex = licznikMutex;
  18.  
  19. class Watek{
  20.     private:
  21.         int numer;
  22.     public:
  23.         Watek(int _numer): numer(_numer){}
  24.         void operator()()
  25.         {
  26.             while(true)
  27.                 {
  28.                     {
  29.                         //tworzymy blokade, ktory uniemozliwi rownoczesny dostep do
  30.                         //wspolnej zmiennej licznik (korzystamy z wczesniej utworzonego mutexu)
  31.                         lock_guard<mutex> blockade(licznikMutex);
  32.                         if(licznik<=0) break;
  33.                         //przy okazji wyklucza rownoczesny dostep do standardowego wyjscia
  34.                         cout<<"w: "<<numer<<" 1: "<<licznik<<endl;
  35.                         --licznik;
  36.                     }
  37.                 //"zamiast pracowac ja wole leniuchowac"
  38.                 this_thread::sleep_for(chrono::microseconds(opoznienie));
  39.             }
  40.         }
  41.  
  42. };
  43.  
  44. int main (int argc, char** argv){
  45.     //tworzymy watki
  46.     thread w1(Watek(1));
  47.     thread w2(Watek(2));
  48.     //czekamy na ich zakonaczenie
  49.     w1.join();
  50.     w2.join();
  51.     return (EXIT_SUCCESS);
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement