C++线程传参详解:从入门到引用类型传参

在C++多线程编程中,了解如何向线程函数传递参数至关重要。本文将详细介绍如何使用'std::thread'类启动线程并传递不同类型的参数。

1. 使用'std::thread'启动线程

C++11引入了'std::thread'类,使得线程管理更加便捷。要启动一个线程,只需创建一个'std::thread'对象,并将其与要执行的函数以及参数列表关联起来。

#include <iostream>
#include <thread>

// 线程函数,接受一个整数参数
void printNumber(int number) {
    std::cout << 'Number: ' << number << std::endl;
}

int main() {
    int number = 42;

    // 启动线程,并传递参数
    std::thread t(printNumber, number);

    // 等待线程结束
    t.join();

    return 0;
}

在上述示例中,'std::thread t(printNumber, number);'创建了一个名为't'的新线程,并将'printNumber'函数作为线程的入口点,同时将'number'变量的值作为参数传递给该函数。

2. 传递引用类型参数

如果需要传递引用类型的参数,则必须使用'std::ref'来包装参数。这是因为'std::thread'默认情况下会复制参数,而使用'std::ref'可以确保传递的是引用。

#include <iostream>
#include <thread>

// 线程函数,接受一个引用类型的参数
void printNumber(int& number) {
    std::cout << 'Number: ' << number << std::endl;
}

int main() {
    int number = 42;

    // 启动线程,并传递引用类型的参数
    std::thread t(printNumber, std::ref(number));

    // 等待线程结束
    t.join();

    return 0;
}

在这个例子中,'std::ref(number)'将'number'变量包装成一个引用,确保'printNumber'函数能够直接修改原始变量的值。

总结

本文介绍了在C++中如何使用'std::thread'类启动线程并传递参数,包括基本类型和引用类型参数。通过学习这些技巧,您可以更好地进行C++多线程编程,并开发出更高效、更强大的应用程序。

C++线程传参详解:从入门到引用类型传参

原文地址: http://www.cveoy.top/t/topic/fyCj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录