fork(1) download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <thread>
  5.  
  6. class sampleClass {
  7. public:
  8. int x = rand() % 100;
  9. sampleClass() {std::cout << "constructor called, x=" << x << std::endl;}
  10. sampleClass(const sampleClass &SC) {std::cout << "copy constructor called, x=" << x << std::endl;}
  11. ~sampleClass() {std::cout << "destructor called, x=" << x << std::endl;}
  12. void add_to_x() {x += rand() % 3;}
  13. };
  14.  
  15. void sampleThread(sampleClass& SC) {
  16. for (int i = 0; i < 1e8; ++i) { //give the thread something to do
  17. SC.add_to_x();
  18. }
  19. std::cout << "thread finished, x=" << SC.x << std::endl;
  20. }
  21.  
  22. int main() {
  23. srand (time(NULL));
  24. sampleClass SC;
  25. std::thread t1 (sampleThread, std::ref(SC));
  26. std::cout << "thread spawned" << std::endl;
  27. t1.join();
  28. std::cout << "thread joined" << std::endl;
  29. }
  30.  
Success #stdin #stdout 3.61s 11656KB
stdin
Standard input is empty
stdout
constructor called, x=95
thread spawned
thread finished, x=100000605
thread joined
destructor called, x=100000605