📅  最后修改于: 2023-12-03 14:55:26.406000             🧑  作者: Mango
在 C++ 中,多线程编程是利用多个线程同时执行程序的技术,使得程序能够更加高效地利用 CPU,实现并发执行任务。在实际编程中,经常会遇到需要创建一些未知数量的线程来执行任务的情况。
C++ 中创建线程的方法是使用 std::thread
类来实现:
#include <thread>
void my_function() {
// 线程要执行的代码
}
std::thread t(my_function); // 创建线程
t.join(); // 程序会等待 t 线程执行完后再继续执行下面的代码
通过传入函数名或可调用对象来创建线程,调用 join() 函数来等待线程执行完毕。
注意:干等线程执行完成的方式显然是十分低效的,我们可以使用 C++ 的 std::future 来获得线程执行结果,而不用干等。
如果要创建未知数量的线程,可以使用循环语句(如 for
或 while
)来动态创建线程。
#include <vector>
std::vector<std::thread> threads;
for (int i = 0; i < n; ++i) {
threads.emplace_back(my_function);
}
for (auto& t : threads) {
t.join();
}
在上面的代码中,动态创建了 n 个线程,使用 std::vector
来保存线程对象,等待所有线程执行完再继续执行下一步操作。
当然,在实际编写代码时,需要注意线程安全,对于共享资源或临界区,需要使用 C++ 的互斥量(std::mutex
)或信号量(std::semaphore
)来保证线程安全。
C++ 中创建线程的方法是使用 std::thread
类来实现,通过传入函数名或可调用对象来创建线程,调用 join() 函数等待线程执行完毕。
要创建未知数量的线程,可以使用循环语句(如 for
或 while
)来动态创建线程。在处理共享资源时,需要使用 C++ 的互斥量或信号量来保证线程安全。