C++ 多线程并行处理多个数据集:加速数据处理
"以下是一个使用C++多线程并行处理多个数据集的示例代码:\n\ncpp\n#include <iostream>\n#include <vector>\n#include <thread>\n#include <mutex>\n\nstd::mutex mtx; // 互斥锁,用于保护共享资源\n\nvoid processDataset(const std::vector<int>& dataset) {\n // 处理数据集的逻辑\n int sum = 0;\n for (int data : dataset) {\n sum += data;\n }\n \n // 输出结果\n std::lock_guard<std::mutex> lock(mtx); // 对共享资源加锁\n std::cout << \"Sum of dataset: \" << sum << std::endl;\n}\n\nint main() {\n // 创建多个数据集\n std::vector<std::vector<int>> datasets = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}};\n \n // 创建线程数组\n std::vector<std::thread> threads;\n \n // 启动线程处理每个数据集\n for (const auto& dataset : datasets) {\n threads.push_back(std::thread(processDataset, dataset));\n }\n \n // 等待所有线程结束\n for (auto& thread : threads) {\n thread.join();\n }\n \n return 0;\n}\n\n\n在上面的示例代码中,我们首先定义了一个互斥锁 mtx 来保护共享资源,然后使用 std::thread 创建多个线程来处理每个数据集。processDataset 函数是每个线程要执行的逻辑,它接受一个数据集作为参数。在 processDataset 函数中,我们使用互斥锁来保护对共享资源的访问,以防止多个线程同时修改共享资源导致的竞态条件。最后,在 main 函数中,我们创建了多个数据集和线程,并等待所有线程结束。\n\n这样,每个数据集都会被一个独立的线程处理,从而加速整个处理过程。请注意,在实际应用中,您可能需要根据实际情况调整线程数量和数据集的划分方式,以获得最佳的性能和并行效果。\n
原文地址: https://www.cveoy.top/t/topic/pKj7 著作权归作者所有。请勿转载和采集!