我有一个包含向量的数组
std::vector<int> A[10];
我想使用多线程将所有向量中的所有值从数组 A 复制到另一个整数向量 B
std::vector<int> B;
为了在多线程中做到这一点,我有一个数组,其中包含数组 A 中的每个向量将在向量 B 中的位置。要复制,我使用的是 lambda 表达式:
int positions[10];
for (int i = 0; i < 10; i++)
{
std::async( std::launch::async, [](std::vector<uint32_t>::iterator first, std::vector<uint32_t>::iterator last, std::vector<uint32_t>::iterator d_first) {std::copy(first, last, d_first);}, (*A[i]).begin(), (*A[i]).end(), B.begin() + positions[i]));
}
现在这工作正常。它创建 10 个线程,每个线程将向量从数组 A 复制到 B 并定义位置。但问题是,它需要使用有限的线程复制所有值。例如 2。
然后,我需要为每个线程传递 5 个向量(当然位置数组将只有两个位置值),而不是在 lambda 函数中传递一个向量进行复制。
有什么办法可以修改 lambda 函数来做到这一点?或者任何其他可能的解决方案?
先感谢您 :)