0

シナリオは次のとおりです。

プログラムが実行された場合、実行時にいくつかのDLLファイルにリンクすると想定すると、(マスター)プログラム/プロセスはDLL内の関数へのマルチスレッド関数呼び出しを作成する場合と作成しない場合があります。

次に、パラメータの受け渡し以外の原因で、実行時にDLL内の関数を呼び出すマスタープロセスがシングルスレッドまたはマルチスレッドのどちらの方法であるかをDLLが判断できる方法があります(たとえば、Open MPによる)。 ?

4

1 に答える 1

1

現在のスレッド ID を確認および比較して、異なるスレッドからの呼び出しを検出できます。開始および終了したスレッドごとに呼び出される DLLMain() 関数を実装することもできます。現在のプロセスへのハンドルを取得し、そこで実行されているスレッドを列挙することもできると確信しています。あなたのコードが異なるスレッドから実行されているかどうかを実際に教えてくれるのは最初のバージョンだけです。たとえば、プログラムがシングルスレッドであっても、WinSock がスレッドを作成してくれると思います。

ところで: win32api タグを追加し、C++ タグを削除することを検討してください。

于 2013-01-19T22:10:40.513 に答える