Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <thread>
- #include <cstdlib>
- #include <ctime>
- //#include <mutex>
- #include <random>
- using namespace std;
- const int philosophers_amount = 5;
- mutex p_mutex;
- default_random_engine engine;
- uniform_int_distribution<int> rand_gen(0, 1500);
- void philosopher_lifecycle(int philosopher_number) {
- for(int i = 0; i < 5; i++) {
- p_mutex.lock();
- cout << "Filozof nr " << philosopher_number << " rozmysla" << endl;
- p_mutex.unlock();
- this_thread::sleep_for(chrono::duration<int, milli>(rand_gen(engine) + 3500));
- p_mutex.lock();
- cout << "Filozof nr " << philosopher_number << " zaczal jesc" << endl;
- p_mutex.unlock();
- this_thread::sleep_for(chrono::duration<int, milli>(rand_gen(engine) + 3500));
- }
- p_mutex.lock();
- cout << "Filozof nr " << philosopher_number << " zakonczyl dzialanie" << endl;
- p_mutex.unlock();
- }
- int main() {
- cout << "Poczatek programu" << endl;
- thread threads[philosophers_amount];
- for(int i = 0; i < philosophers_amount; i++) {
- threads[i] = thread(philosopher_lifecycle, i+1);
- }
- for(int i = 0; i < philosophers_amount; i++) {
- threads[i].join();
- }
- cout << "Koniec programu" << endl;
- return 0;
- }
-
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement