C++线程传参详解:从入门到引用类型传参
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++多线程编程,并开发出更高效、更强大的应用程序。
原文地址: http://www.cveoy.top/t/topic/fyCj 著作权归作者所有。请勿转载和采集!