Advertisement
obernardovieira

[New] Thread inside class

Aug 9th, 2014
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <thread>
  3. #include <chrono>
  4. #include <ctime>
  5. #include <set>
  6.  
  7.  
  8. class tmp {
  9. private:
  10.     std::set<std::thread::id> ativo;
  11.     int n;
  12.  
  13. public:
  14.     void print_n() {
  15.         std::this_thread::sleep_for(std::chrono::seconds(1));
  16.        
  17.         if(ativo.find(std::this_thread::get_id()) != ativo.end()) {
  18.        
  19.             std::cout << n << std::endl;
  20.             this->tmp::print_n();
  21.         }
  22.     }
  23.    
  24.     void stop(std::thread::id t) {
  25.         ativo.erase(t);
  26.         return;
  27.     }
  28.     void set(int v) {
  29.         n = v;
  30.         return;
  31.     }
  32.    
  33.     std::thread::id print() {
  34.         std::thread prt_thread(&tmp::print_n, this);
  35.        
  36.         ativo.insert(prt_thread.get_id());
  37.        
  38.         prt_thread.detach();
  39.         return prt_thread.get_id();
  40.     }
  41. };
  42.  
  43.  
  44. int main()
  45. {
  46.     tmp TMP;
  47.     TMP.set(5);
  48.    
  49.     std::thread::id the_thread = TMP.print();
  50.    
  51.     while(true) {
  52.         int get;
  53.         std::cin >> get;
  54.         if(get == 0) {
  55.             TMP.stop(the_thread);
  56.             break;
  57.         }
  58.         TMP.set(get);
  59.     }
  60.    
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement