0

场景在这里:

如果一个程序被执行,在运行时假设它将链接到一些 DLL 文件,(主)程序/进程可能会或可能不会创建对 DLL 中函数的多线程函数调用。

那么,除了参数传递之外,DLL 是否有一种方法可以判断在运行时调用 DLL 中的函数的主进程是单线程还是多线程(例如,通过 Open MP) ?

4

1 回答 1

1

您可以检查和比较当前线程 ID 以检测来自不同线程的调用。您还可以实现一个 DLLMain() 函数,该函数为每个启动和终止的线程调用。我很确定您还可以检索当前进程的句柄并枚举其中运行的线程。只有第一个版本实际上会告诉您您的代码是否从不同的线程运行,但我认为例如 WinSock 将为您创建一个线程,即使您的程序是单线程的。

顺便说一句:考虑添加 win32api 标记并删除 C++ 标记。

于 2013-01-19T22:10:40.513 回答