std::thread::swap - cppreference.com

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