Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <iostream>
- #include <boost/thread/thread.hpp>
- //mutex = mutual exclusion - umozliwia szeregowanie dostepu do wspolnych zasobow
- #include <boost/thread/mutex.hpp>
- using namespace std;
- using namespace boost;
- const int opoznienie=100;
- //liczba zadan do wykonania przez watki
- //***licznik jest WSPOLNY dla wszystkich wątkow***
- int licznik=50;
- mutex = licznikMutex;
- class Watek{
- private:
- int numer;
- public:
- Watek(int _numer): numer(_numer){}
- void operator()()
- {
- while(true)
- {
- {
- //tworzymy blokade, ktory uniemozliwi rownoczesny dostep do
- //wspolnej zmiennej licznik (korzystamy z wczesniej utworzonego mutexu)
- lock_guard<mutex> blockade(licznikMutex);
- if(licznik<=0) break;
- //przy okazji wyklucza rownoczesny dostep do standardowego wyjscia
- cout<<"w: "<<numer<<" 1: "<<licznik<<endl;
- --licznik;
- }
- //"zamiast pracowac ja wole leniuchowac"
- this_thread::sleep_for(chrono::microseconds(opoznienie));
- }
- }
- };
- int main (int argc, char** argv){
- //tworzymy watki
- thread w1(Watek(1));
- thread w2(Watek(2));
- //czekamy na ich zakonaczenie
- w1.join();
- w2.join();
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement