【发布时间】:2015-11-18 09:21:38
【问题描述】:
我是 C 语言的初学者,尤其是线程方面的初学者。
我需要malloc 并使用HANDLE 的动态数组,稍后将在WaitForMultipleObjects 中使用。
我现在做什么:
int i = 0 ;
HANDLE ThreadHandlers = (HANDLE)malloc(sizeof(HANDLE)* List->logicalLength);
然后循环:
while(curr!= NULL)
{
ThreadHandlers[i]= createtestThread((LPTHREAD_START_ROUTINE)executeTest,(TestStruct*)(curr->data),ThreadIds+i);
curr = curr->next;
//ThreadHandlers[i] =
i++;
}
WaitForMultipleObjects(
List->logicalLength,
ThreadHandlers,
TRUE, /* wait until all threads finish */
INFINITE);
但是当我尝试编译时,我得到:
IntelliSense:表达式必须是指向完整对象类型的指针
据我了解,这是因为 HANDLE 是 typedef void*
我不能用void*做逻辑。
可以采取什么解决方法?
进行这种编程的正确方法是什么? (等待未知数量的线程)
【问题讨论】:
标签: c multithreading winapi