【发布时间】:2019-08-23 10:44:38
【问题描述】:
我认为该函数将创建线程,直到资源耗尽,但我运行代码并没有看到资源耗尽..
DWORD WINAPI CreateThreads(LPVOID param)
{
int n = *(int*)param;
HANDLE* threads = (HANDLE*)malloc(n * sizeof(HANDLE));
for (int i = 0; i < n; i++)
{
threads[i] = CreateThread(NULL,0, CreateThreads, &n, 0,NULL);
}
for (int i = 0; i < n; i++)
{
WaitForSingleObject(threads[i], INFINITE);
}
return 0;
}
int main()
{
int n = 5;
CreateThreads(&n);
return 0;
}
【问题讨论】:
-
你试过检查
CreateThread返回什么? -
如果你真的想知道有多少线程被创建,你可以让
CreateThreads()在进入时自动增加一个计数器变量,并在退出前自动减少计数器,然后你可以显示当前定期计数器值。
标签: c multithreading winapi