Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <thread>
  3. #include <cstdlib>
  4. #include <ctime>
  5. //#include <mutex>
  6. #include <random>
  7. using namespace std;
  8. const int philosophers_amount = 5;
  9. mutex p_mutex;
  10. default_random_engine engine;
  11. uniform_int_distribution<int> rand_gen(0, 1500);
  12. void philosopher_lifecycle(int philosopher_number) {
  13.     for(int i = 0; i < 5; i++) {
  14.         p_mutex.lock();
  15.         cout << "Filozof nr " << philosopher_number << " rozmysla" << endl;
  16.         p_mutex.unlock();
  17.         this_thread::sleep_for(chrono::duration<int, milli>(rand_gen(engine) + 3500));
  18.         p_mutex.lock();
  19.         cout << "Filozof nr " << philosopher_number << " zaczal jesc" << endl;
  20.         p_mutex.unlock();
  21.         this_thread::sleep_for(chrono::duration<int, milli>(rand_gen(engine) + 3500));
  22.     }
  23.     p_mutex.lock();
  24.     cout << "Filozof nr " << philosopher_number << " zakonczyl dzialanie" << endl;
  25.     p_mutex.unlock();
  26. }
  27. int main() {
  28.     cout << "Poczatek programu" << endl;
  29.     thread threads[philosophers_amount];
  30.     for(int i = 0; i < philosophers_amount; i++) {
  31.         threads[i] = thread(philosopher_lifecycle, i+1);
  32.     }
  33.     for(int i = 0; i < philosophers_amount; i++) {
  34.         threads[i].join();
  35.     }
  36.     cout << "Koniec programu" << endl;
  37.     return 0;
  38. }
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement