Advertisement
Lauda

Untitled

Mar 27th, 2013
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. /*
  2.     Napisati konkurentni program koji kreira 5 niti od funktora.
  3.     Svaki funktor dobija svoj redni broj prilikom stvaranja.
  4.  
  5.     Prilikom stvaranja niti funktorima se prosleduju reference
  6.     na vektor elemenata u koji treba da upisu svoj id.
  7.     Id se upisuje na poziciju koja odgovara rednom broju niti
  8.     stvorene od funktora.
  9.  
  10.     Na kraju programa proci kroz vektor i ispisati id-eve niti
  11.     u obrnutom redosledu koristeci reverse iterator.
  12. */
  13.  
  14.  
  15. #include <iostream>
  16. #include <thread>
  17. #include <vector>
  18.  
  19. using namespace std;
  20.  
  21. typedef vector<thread::id>::const_reverse_iterator Vcri;
  22.  
  23.  
  24. class Funktor {
  25.     int rbr;
  26. public:
  27.     Funktor(int RbR) : rbr(RbR) {}
  28.     void operator()(vector<thread::id>& v) {
  29.         v[rbr] = this_thread::get_id();
  30.     }
  31. };
  32.  
  33. int main () {
  34.  
  35.     vector<thread::id> v(5);
  36.     thread t[5];
  37.     for (int i=0; i<5; i++) {
  38.         Funktor f(i);
  39.         t[i] = thread(f,ref(v));
  40.     }
  41.  
  42.     for (int i=0; i<5; i++) {
  43.         t[i].join();
  44.     }
  45.  
  46.     for (Vcri it = v.rbegin(); it!=v.rend(); it++) {
  47.         cout << "ID: " << *it << endl;
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement