C++ 多线程并行计算:使用多个数据集
下面是一个使用 C++ 进行并行计算的示例代码,其中包括多个线程和多个数据集:
#include <iostream>
#include <vector>
#include <thread>
// 并行计算函数
void compute(std'vector<int>& data)
{
for (int i = 0; i < data.size(); i++)
{
// 在此处进行数据处理和计算
// 例如,可以对每个数据元素进行平方操作
data[i] = data[i] * data[i];
}
}
int main()
{
// 创建多个数据集
std'vector<std'vector<int>> datasets = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
// 创建一个线程容器
std'vector<std'thread> threads;
// 启动多个线程进行并行计算
for (int i = 0; i < datasets.size(); i++)
{
// 创建一个新线程,并将数据集作为参数传递给计算函数
threads.push_back(std'thread(compute, std'ref(datasets[i])));
}
// 等待所有线程完成计算
for (int i = 0; i < threads.size(); i++)
{
threads[i].join();
}
// 输出计算结果
for (int i = 0; i < datasets.size(); i++)
{
std'cout << "Dataset " << i + 1 << ": ";
for (int j = 0; j < datasets[i].size(); j++)
{
std'cout << datasets[i][j] << " ";
}
std'cout << std'endl;
}
return 0;
}
在上述代码中,我们首先创建了多个数据集,并将它们存储在一个容器中。然后,我们创建了一个线程容器,并使用循环启动了多个线程。每个线程都会调用compute函数,该函数接受一个数据集作为参数,并对该数据集进行计算。
在compute函数中,我们可以进行具体的数据处理和计算操作。此处的示例代码对每个数据元素进行了平方操作。
在主函数中,我们使用循环等待所有线程完成计算,并输出计算结果。
请注意,由于多个线程同时访问和修改共享的数据集,可能会导致竞态条件和数据不一致的问题。在实际应用中,您可能需要使用互斥锁或其他同步机制来保护共享数据的访问。
原文地址: https://www.cveoy.top/t/topic/pKj3 著作权归作者所有。请勿转载和采集!