0

我有一个包含向量的数组

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 函数来做到这一点?或者任何其他可能的解决方案?

先感谢您 :)

4

0 回答 0