-3

特定のアプリケーションで使用する静的 dll ファイルを作成しました。その dll のエクスポートされたメソッドが、そのアプリケーションの個別のスレッドによって呼び出されているのか、それとも単一のスレッドによって呼び出されているのかを知りたかったのです。dll のメソッドを呼び出すスレッドのスレッド ID を出力すると、関数が単一のスレッドまたは複数のスレッドによって呼び出されているかどうかを判断するのに役立つと考えています。これは役に立ちますか?また、dll を呼び出しているスレッドのスレッド ID を取得するにはどうすればよいですか?

4

1 に答える 1

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);
    }
}
于 2013-03-04T10:32:09.297 に答える