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

std::thread::swap: std::thread::swap

NAME

std::thread::swap - std::thread::swap

Synopsis


void swap( thread& other ) noexcept; (since C++11)


Exchanges the underlying handles of two thread objects.

Parameters


other - the thread to swap with

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();
  }

Possible 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


std::swap(std::thread) specializes the std::swap algorithm
                       (function template)
(C++11)