std::swap(std::thread) (3) - Linux Manuals

std::swap(std::thread): std::swap(std::thread)

NAME

std::swap(std::thread) - std::swap(std::thread)

Synopsis


void swap( thread &lhs, thread &rhs ) noexcept; (since C++11)


Overloads the std::swap algorithm for std::thread. Exchanges the state of lhs with that of rhs. Effectively calls lhs.swap(rhs).

Parameters


lhs, rhs - threads whose states to swap

Return value


(none)

Example


// Run this code


  #include <iostream>
  #include <thread>
  #include <chrono>


  void foo()
  {
      std::this_thread::sleep_for(std::chrono::seconds(1));
  }


  void bar()
  {
      std::this_thread::sleep_for(std::chrono::seconds(1));
  }


  int main()
  {
      std::thread t1(foo);
      std::thread t2(bar);


      std::cout << "thread 1 id: " << t1.get_id() << std::endl;
      std::cout << "thread 2 id: " << t2.get_id() << std::endl;


      std::swap(t1, t2);


      std::cout << "after std::swap(t1, t2):" << std::endl;
      std::cout << "thread 1 id: " << t1.get_id() << std::endl;
      std::cout << "thread 2 id: " << t2.get_id() << std::endl;


      t1.swap(t2);


      std::cout << "after t1.swap(t2):" << std::endl;
      std::cout << "thread 1 id: " << t1.get_id() << std::endl;
      std::cout << "thread 2 id: " << t2.get_id() << std::endl;


      t1.join();
      t2.join();
  }

Output:


  thread 1 id: 1892
  thread 2 id: 2584
  after std::swap(t1, t2):
  thread 1 id: 2584
  thread 2 id: 1892
  after t1.swap(t2):
  thread 1 id: 1892
  thread 2 id: 2584

See also


     swaps two thread objects
swap (public member function)