swap(std::jthread)(3)

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

πŸ’– NAME πŸ’–

okay so bestie, this is the swap(std::jthread) page from the C++ Standard Libary manual ✨ and the name section is literally swap(std::jthread) β€” swap(std::jthread) πŸ’…

πŸ¦‹ Synopsis πŸ¦‹

friend void swap( jthread& lhs, jthread& rhs ) noexcept;  (since
C++20)

okay so what it do: it overloads the std::swap algorithm for std::jthread πŸ”. It exchanges the state of lhs with that of rhs. It effectively calls lhs.swap(rhs). That's the whole vibe.

Now the important little caveat, bestie: this function is not visible to ordinary unqualified or qualified lookup πŸš«πŸ‘€. It can only be found by argument-dependent lookup when std::jthread is an associated class of the arguments. iykyk.

πŸŽ€ Parameters πŸŽ€

  • lhs, rhs β€” the jthreads whose states we're swapping πŸ’…

🫢 Return value 🫢

(none) β€” literally no return value, bestie. Nothing comes back. Periodt. ✨

🌈 Example 🌈

Run this code, bestie β€” it's the whole example, no edits:

// 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::jthread t1(foo);
    std::jthread 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';

}

⭐ Possible output ⭐

Here's the possible output, 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 jthread objects (public member function) ✨

and that's the whole swap(std::jthread)(3) page, sourced from http://cppreference.com, version/date 2024.06.10 β€” bye bestie, go swap those jthreads πŸ’…πŸ’–

πŸ“¦ where this page comes from