如何在 C++ 中创建新线程

17 Mar 2025 | 4 分钟阅读

在 C++ 中,创建新线程是一种强大的方式,可以利用多处理器或多核并最大化程序性能。线程支持多个独立进程同时执行,允许程序同时执行多个任务。这对于 CPU 密集型应用程序特别有用,例如涉及科学或数学计算或需要大量输入/输出操作的应用程序。

在 C++ 中创建新线程涉及几个步骤,包括定义线程函数、创建线程对象和执行线程。在本文中,我们将更详细地探讨这些步骤。

定义线程函数

创建新线程的第一步是定义将在新线程中执行的函数。此函数应执行线程旨在完成的任务。例如,如果线程旨在执行某些计算或数据处理,则该函数应包含相关代码。

该函数应具有与线程库要求匹配的特定签名。在 C++ 中,这通常意味着该函数应将其参数作为 void 指针并返回一个 void 指针。这允许函数通过指针接收数据并返回结果。

这是一个计算整数数组和的线程函数的示例

程序 1

输出

How to Create a New Thread in C++

说明

在此示例中,该函数将其参数作为 void 指针,并将其转换为整数数组。然后,它计算数组元素的总和,并将结果作为 void 指针返回。

创建线程对象

定义线程函数后,下一步是创建线程对象。在 C++ 中,这通常使用 `std::thread` 类完成,它是 C++ 标准库的一部分。

要创建新的线程对象,您需要将线程函数和任何必需的参数作为参数传递给 `std::thread` 构造函数。以下是为前面定义的 `sum_array` 函数创建新线程对象的示例

程序 2

输出

How to Create a New Thread in C++

说明

在此示例中,我们创建一个新的整数数组并将其作为参数传递给 `sum_array` 函数。然后,我们创建一个新的 `std::thread` 对象,将 `sum_array` 函数和数组参数作为参数传递给构造函数。

执行线程

创建线程对象后,下一步是执行线程。这是通过调用 `std::thread::join` 方法完成的,该方法启动线程并等待其完成。

程序 3

输出

How to Create a New Thread in C++

说明

在此示例中,我们创建一个新的线程对象并在该对象上调用 `join` 方法。这会启动线程并等待其完成,然后继续执行程序的其余部分。

需要注意的是,`join` 方法只能在线程对象上调用一次。如果需要多次执行相同的线程函数,则需要为每次执行创建一个新的线程对象。

结论

虽然在 C++ 中创建新线程是优化程序性能的强大技术,但谨慎使用它很重要。线程需要额外的内存和处理资源,过度的线程使用可能导致性能下降和其他问题。此外,线程可能引入同步和并发问题,必须仔细管理这些问题以避免竞态条件和其他问题。

总的来说,在 C++ 中创建新线程需要仔细规划和执行。但是,通过遵循线程设计和管理的最佳实践,程序员可以充分发挥多核处理器的潜力并实现最佳程序性能。


下一个主题C++ 静态成员