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

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

okay so bestie, welcome to std::swap(std::thread)(3) from the C++ Standard Libary manual ✨ (yes, β€œLibary” is literally spelled like that in the header, we respect the typo πŸ’…). This page is literally named std::swap(std::thread) - std::swap(std::thread) (same thing twice, no thoughts, head empty πŸ˜­πŸ’€).


🌈 Synopsis 🌈

void swap( std::thread& lhs, std::thread& rhs ) noexcept;

(since C++11) πŸ¦‹

This overloads the std::swap algorithm for std::thread. It exchanges the state of lhs with that of rhs. Effectively calls lhs.swap(rhs). periodt. ✨


πŸŽ€ Parameters πŸŽ€

  • lhs, rhs β€” threads whose states to swap 🫢

⭐ Return value ⭐

(none) β€” literally nothing, bestie πŸ’€πŸ’…


πŸ¦‹ Example πŸ¦‹

okay this is the cute little demo, run it if you want to see the swap behavior in action 🌸:

// Run this code

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

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

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

int main()
{
    using std::swap;

    std::thread t1(foo);
    std::thread t2(bar);

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

    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 🌸

could look like this, bestie πŸ‘€:

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 πŸ‘‘

  • swap β€” swaps two thread objects 🫢 (public member function)

mwah πŸ’‹ byeee bestie β€” source: http://cppreference.com; version/date: 2024.06.10; page: std::swap(std::thread)(3) βœ¨πŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from