我编写了一个包含函数和两个线程函数的库。在用户程序中,我将使用Drive id作为参数调用库内的函数。该函数根据我给出的Drive Id中的no来创建线程。然后,此线程函数将处理驱动器从驱动器获取文件夹列表并将其放入队列中。一旦完成,它将调用一定数量的线程(我用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的语句。
答案 0 :(得分:0)
库函数可以创建向量并在LPVOID线程参数中传递其地址。如果你需要多个向量将它们全部放在一个struct中,并在LPVOID线程参数中传递struct的地址。