如何将向量返回到 Windows 线程函数

How to Return a vector to Windows thread function?

本文关键字:Windows 线程 函数 返回 向量      更新时间:2023-10-16

我写了一个由函数和两个线程函数组成的库。从用户程序中,我将调用库内的函数,并将驱动器 id 作为参数。该函数根据我给出的驱动器 ID 的数量创建线程。然后,此线程函数将处理驱动器从驱动器获取文件夹列表并将其放入队列中。完成后,它将调用一定数量的线程(我用MAX_Threads初始化),这些子线程将处理队列并将驱动器内的文件列表放在相应的向量中。现在我的问题是我必须将这些向量返回到调用库的语句中。我通过许多网站进行了参考,但我没有得到预期的结果。

我实现的代码片段是..

ListFiles(string DriveId)
{
    loop(no of drives)
        create Threads
}
DWORD WINAPI FileList::ParThread(LPVOID s)
{
    //Process Drive
    directories.push_back(path + "\" + ffd.cFileName); //global queue 
    //it will be locked and then inserted and released by each thread
    loop(Max - threads)
        CreateThreads
}
DWORD WINAPI FileList::List(LPVOID s)
{
    //create vector local to each thread
    //create local queue that copies values from global queue and processing occurs in local queue
    //inserts file name into vector
}

现在我想将这些向量返回到调用函数 ListFiles 的语句中,该语句位于库中。

库函数可以创建向量并在 LPVOID 线程参数中传递其地址。如果需要多个向量,请将它们全部放在一个结构中,并在 LPVOID 线程参数中传递结构的地址。