确定应用程序中的多个线程是否正在调用dll - 使用ThreadId?

时间:2013-03-04 10:29:38

标签: c++ dll

我创建了一个静态dll文件供某个应用程序使用。我想知道该dll的导出方法是由该应用程序的单独线程还是由单个线程调用。我想如果我输出调用dll中的方法的线程的threadid,这可能会帮助我弄清楚函数是由单个线程还是多个线程调用。这会有帮助吗?另外,我如何获得调用dll的线程的线程?

1 个答案:

答案 0 :(得分:3)

使用GetCurrentThreadId功能。

std::vector<DWORD> ids;

__declspec(dllexport) int __stdcall SomeFunction()
{
    DWORD id = GetCurrentThreadID();
    if (std::find(ids.begin(), ids.end(), id) != ids.end())
    {
        // New thread uses this function
        ids.push_back(id);
    }
}