From cppreference.com
voidswap(std::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<chrono>#include<iostream>#include<thread>voidfoo(){std::this_thread::sleep_for(std::chrono::seconds(1));}voidbar(){std::this_thread::sleep_for(std::chrono::seconds(1));}intmain(){std::threadt1(foo);std::threadt2(bar);std::cout<<"thread 1 id: "<<t1.get_id()<<'\n'<<"thread 2 id: "<<t2.get_id()<<'\n';std::swap(t1,t2);std::cout<<"after std::swap(t1, t2):"<<'\n'<<"thread 1 id: "<<t1.get_id()<<'\n'<<"thread 2 id: "<<t2.get_id()<<'\n';t1.swap(t2);std::cout<<"after t1.swap(t2):"<<'\n'<<"thread 1 id: "<<t1.get_id()<<'\n'<<"thread 2 id: "<<t2.get_id()<<'\n';t1.join();t2.join();}Possible output:
thread 1 id: 140185268262656 thread 2 id: 140185259869952 after std::swap(t1, t2): thread 1 id: 140185259869952 thread 2 id: 140185268262656 after t1.swap(t2): thread 1 id: 140185268262656 thread 2 id: 140185259869952 See also