📅  最后修改于: 2023-12-03 15:36:52.528000             🧑  作者: Mango
在 C++ 语言中,线程是一种轻量级进程,它能够通过并发的方式执行任务,提高程序的运行效率。
在本文中,我们将介绍如何创建 n 个线程,并让它们同时执行任务。
在开始编写代码之前,我们需要添加头文件和使用合适的命名空间。
#include <iostream>
#include <thread>
using namespace std;
以上代码中,<iostream>
是标准输入输出流头文件,<thread>
是线程的头文件。而 using namespace std
则是使用了标准命名空间来避免使用完整的命名空间。
接下来,让我们来看一下如何创建 n 个线程。
void task(int n) {
cout << "Thread " << n << " is running." << endl;
}
int main() {
const int n = 5;
thread threads[n];
for (int i = 0; i < n; i++) {
threads[i] = thread(task, i);
}
for (auto &t : threads) {
t.join();
}
return 0;
}
以上代码中,我们创建了一个名为task
的函数,并且它接受一个 int
类型的参数 n
,主要用于输出当前线程的编号。
在 main
函数中,我们先定义了一个常量 n
,表示需要创建的线程数量。
然后,我们创建了一个长度为 n
的线程数组 threads
,用于存储所创建的线程。
接着,在 for 循环中,我们通过 thread
类的构造函数创建线程,并将线程存储在 threads
数组中。
最后,在 for 循环中,我们使用了 join()
函数等待所有的线程执行完毕。
在以上代码中,我们使用了 thread
类来创建线程,代码如下:
thread threads[n];
这里的 n
表示需要创建的线程数量。我们使用上述代码创建了一个长度为 n
的线程数组。
在 for 循环中,我们通过 thread
类的构造函数创建线程,并将线程存储在 threads
数组中。代码如下:
threads[i] = thread(task, i);
这里的 task
就是我们前面定义的函数,它会被线程执行。而 i
则是当前线程的编号。
最后,我们使用了 join()
函数来等待所有的线程执行完毕,代码如下:
for (auto &t : threads) {
t.join();
}
这里的 join()
函数实际上是等待线程执行完毕之后才返回,因此可以避免出现多个线程同时运行的情况。而 for (auto &t : threads)
则是对 threads
数组进行遍历,从而让每个线程都可以执行 join()
函数。
完整代码如下:
#include <iostream>
#include <thread>
using namespace std;
void task(int n) {
cout << "Thread " << n << " is running." << endl;
}
int main() {
const int n = 5;
thread threads[n];
for (int i = 0; i < n; i++) {
threads[i] = thread(task, i);
}
for (auto &t : threads) {
t.join();
}
return 0;
}
以上就是如何创建 n 个线程 cpp 的介绍和详细步骤,希望对程序员有所帮助。