📜  创建 n 个线程 cpp - C++ (1)

📅  最后修改于: 2023-12-03 15:36:52.528000             🧑  作者: Mango

创建 n 个线程 cpp - C++

在 C++ 语言中,线程是一种轻量级进程,它能够通过并发的方式执行任务,提高程序的运行效率。

在本文中,我们将介绍如何创建 n 个线程,并让它们同时执行任务。

头文件和命名空间

在开始编写代码之前,我们需要添加头文件和使用合适的命名空间。

#include <iostream>
#include <thread>
using namespace std;

以上代码中,<iostream> 是标准输入输出流头文件,<thread> 是线程的头文件。而 using namespace std 则是使用了标准命名空间来避免使用完整的命名空间。

创建 n 个线程

接下来,让我们来看一下如何创建 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 的介绍和详细步骤,希望对程序员有所帮助。