【发布时间】:2020-02-12 16:17:05
【问题描述】:
我有如下程序,函数 Foo 由线程和主进程调用。现在如何识别函数Foo是由线程或主进程调用的。
#include <Windows.h>
#include <stdio.h>
DWORD WINAPI Foo(LPVOID lPtr);
int main()
{
DWORD dwExitCode;
DWORD dwThreadID;
HANDLE hT[10];
int i;
for( i = 0; i<5; i++)
hT[i] = CreateThread(
NULL,
0,
Foo,
0,
0,
&dwThreadID
);
fflush(stdout);
Foo(0);
return 0;
}
DWORD WINAPI Foo(LPVOID lPtr){
printf("\ninside the Function");
return 0;
}
【问题讨论】:
-
这是否是有用的信息值得怀疑。但是如果你需要知道,你将不得不将它传递给你的线程函数。有一个
lpParameter可以用于任何你认为合适的事情。 -
检查线程 ID 是一种显而易见的方法
-
顺便说一句,没有“主进程”这样的东西。它只是进程中的主线程或第一个线程。这段代码调用了五次 CreateThread(),为您提供了一个包含六个线程的进程。