C++ ThreadLocal 怎么使用lambda

   2024-10-06 4530
核心提示:在 C++ 中,可以使用 thread_local 关键字来声明一个线程局部变量。Lambda 表达式可以被当做一个函数对象,因此可以在 lambda 中

在 C++ 中,可以使用 thread_local 关键字来声明一个线程局部变量。Lambda 表达式可以被当做一个函数对象,因此可以在 lambda 中使用线程局部变量。下面是一个简单的例子:

#include <iostream>#include <thread>int main() {    thread_local int threadLocalVar = 0;    std::thread t1([&](){        threadLocalVar = 10;        std::cout << "Thread 1: threadLocalVar = " << threadLocalVar << std::endl;    });    std::thread t2([&](){        threadLocalVar = 20;        std::cout << "Thread 2: threadLocalVar = " << threadLocalVar << std::endl;    });    t1.join();    t2.join();    std::cout << "Main thread: threadLocalVar = " << threadLocalVar << std::endl;    return 0;}

在这个例子中,我们声明了一个 thread_local 的整型变量 threadLocalVar,然后在两个线程中分别对这个变量赋值并输出。在 lambda 表达式中,我们使用 [&] 指定捕获所有外部变量,以便在 lambda 中使用 threadLocalVar 变量。

注意:C++11 引入了 thread_local 关键字,因此在编译时需要使用 -std=c++11 或更高版本的标准。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号