惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Blog of Author Tim Ferriss
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
小众软件
小众软件
博客园_首页
博客园 - 聂微东
罗磊的独立博客
Recent Announcements
Recent Announcements
U
Unit 42
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
D
DataBreaches.Net
Last Week in AI
Last Week in AI

博客园 - keleman

配置 git 到达 通过 git &&ssh 登录 gitee.com 和 github.com 整理于豆包问答,测试可以实现 由QThread::currentThread()引出的 如何在线程中安全运行任务 由豆包整理的 持有 std::unique_ptr 的 lambda → 不能放进 std::function 从豆包整理 C++ Lambda 捕获方式・安全写法速查表 整理自豆包 C++14 Lambda 相比 C++11 的核心改进 firefox 149 在 linux mint 21 上的 mozillia 源安装 qt GUI 如何利用q thread 和qfuturwatcher 实现 不阻塞主线程? xargs 和管道 |的区别 一加5t的volte怎么设置 做上位机软件设计 下位机软件设计 qt 将槽函数在子线程中执行的方法 以二级指针作为函数参数,并从函数中分配空间的原理 std::forward<T> ,std::move 使用场景的区别 VS2017 设置 类模板参数推导(CTAD, Class Template Argument Deduction) postEvent 和 sendEvent的区别 QObject Event( )customEvent( ) 函数区别 关于实际项目中必要的几个文件操作接口 QwaitCondition.的工作原理 【Debian】更换软件 源出现的Certificate问题解决方法 linux PS1 提示符的颜色设置 python 的几个常用的函数 知识点 设置 docker 国内的 映像加速器 docker 容器安装软件 docke 容器设置代理 docker 安装问题
lambda 如何捕获 所在子线程ID
keleman · 2026-06-25 · via 博客园 - keleman

c++14中lambda表达式中在捕获列表中[id=std::this_thread::get_id()]中的id 是指lambda所在的线程id吗?
auto lam1=[id=std::this_thread:get_id()]() {... std::thread::id id_1 = std::this_thread::get_id(); };

id 和 id_1 的值相同吗?
不一定相同,在 C++14 的 lambda 表达式中,id = std::this_thread::get_id() 捕获的 id 就是定义该 lambda 表达式时所在线程的 ID。而id_1是 运行该lambda表达式的所在线程id。

这是 C++14 引入的初始化捕获(Init Capture)特性。它的求值时机非常关键:

求值时机:初始化捕获(id = ...)右侧的表达式在 lambda 定义时就会立刻被求值。

捕获的值:这个求值结果(此处为线程 ID)会被捕获并存储为 lambda 的一个成员变量。

后续调用:之后无论这个 lambda 被哪个线程调用,id 的值都保持不变,始终是定义时的线程 ID。

所以id是定义lam1的线程的id

id_1是 lam1所在线程的id;

例如

std::thread th(lam1)
{
std::thread::id id_1 = std::this_thread::get_id();
}
th.join();
此时 id 和id_1不相同。