0

VB.NET Web サーバーからカスタム作成のアンマネージ DLL への関数を呼び出しています。マルチコア サーバー上の Web サービスを介してこの DLL を呼び出すと、問題が発生し、常にクラッシュします。

サーバーを再起動してシングルコアのみを使用するようにすると、常に正常に動作し、クラッシュすることはありません。

DLL 呼び出しの直前と直後にデバッグ コードを出力したので、DLL 呼び出しがクラッシュの原因であることはわかっています。

.NET コードのプロセッサ アフィニティを 1 コアに強制できますが、これはアンマネージ DLL には適用されません。

アンマネージ DLL を単一のコアでのみ実行するように強制するにはどうすればよいですか?これで問題が解決すると確信していますか?

4

1 に答える 1

0

DLL コードにアクセスできる場合は、DllMain で次の行のようなものを使用できます。

DWORD_PTR processAffinityMask = 0x1;

SetProcessAffinityMask( GetCurrentProcess(), processAffinityMask );

これにより、dll のプロセス アフィニティが最初の CPU に設定されます。

于 2012-01-23T11:37:53.433 に答える