std::jthread::swap

来自cppreference.com
< cpp‎ | thread‎ | jthread
 
 
并发支持库
线程
(C++11)
(C++20)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
协作式取消
互斥
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)
条件变量
(C++11)
信号量
闩与屏障
(C++20)
(C++20)
未来体
(C++11)
(C++11)
(C++11)
安全回收
风险指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 弃用)
(C++11)(C++20 弃用)
内存定序
(C++11)(C++26 弃用)
原子操作的自由函数
原子标志的自由函数
 
 
void swap(std::jthread& other )noexcept;
(C++20 起)

交换两个 jthread 对象的底层句柄。

目录

[编辑]参数

other - 要与之交换的 jthread

[编辑]返回值

(无)

[编辑]示例

#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(){std::jthread t1(foo);std::jthread t2(bar);   std::cout<<"线程 1 id: "<< t1.get_id()<<'\n'<<"线程 2 id: "<< t2.get_id()<<'\n';   std::swap(t1, t2);   std::cout<<"std::swap(t1, t2) 后:"<<'\n'<<"线程 1 id: "<< t1.get_id()<<'\n'<<"线程 2 id: "<< t2.get_id()<<'\n';   t1.swap(t2);   std::cout<<"t1.swap(t2) 后:"<<'\n'<<"线程 1 id: "<< t1.get_id()<<'\n'<<"线程 2 id: "<< t2.get_id()<<'\n';     }

可能的输出:

线程 1 id: 140185268262656 线程 2 id: 140185259869952 std::swap(t1, t2) 后: 线程 1 id: 140185259869952 线程 2 id: 140185268262656 t1.swap(t2) 后: 线程 1 id: 140185268262656 线程 2 id: 140185259869952

[编辑]参阅

特化 std::swap 算法
(函数)[编辑]
close