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

推荐订阅源

aimingoo的专栏
aimingoo的专栏
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
T
Threatpost
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
N
Netflix TechBlog - Medium
B
Blog
The GitHub Blog
The GitHub Blog
F
Full Disclosure
MyScale Blog
MyScale Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Y
Y Combinator Blog
GbyAI
GbyAI
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
NISL@THU
NISL@THU
爱范儿
爱范儿
Spread Privacy
Spread Privacy
F
Fortinet All Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hacker News - Newest:
Hacker News - Newest: "LLM"
Simon Willison's Weblog
Simon Willison's Weblog
S
Security @ Cisco Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
V
V2EX
人人都是产品经理
人人都是产品经理
W
WeLiveSecurity
IT之家
IT之家
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
博客园_首页
Forbes - Security
Forbes - Security
Cloudbric
Cloudbric
有赞技术团队
有赞技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Palo Alto Networks Blog
The Register - Security
The Register - Security
Google DeepMind News
Google DeepMind News
Hacker News: Ask HN
Hacker News: Ask HN
腾讯CDC
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone

博客园 - 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不相同。