Принудительная привязка определенного процессора к неуправляемому вызову DLL из VB.NET - PullRequest
0 голосов
/ 23 января 2012

Я вызываю функцию из веб-сервера VB.NET в пользовательскую написанную неуправляемую DLL.Если мы вызываем эту библиотеку DLL через веб-сервис на многоядерном сервере, мы сталкиваемся с проблемами, и он всегда дает сбой.

Если я перезагружаю сервер и использую только одноядерный сервер, он всегда работает нормально и никогдасбои.

Я знаю, что вызов DLL ответственен за сбой, так как я вывел код отладки непосредственно перед и после вызова DLL.

Я могу принудительно привязать процессор .NET-кода к1 ядро, но это не относится к неуправляемой DLL.

Как заставить неуправляемую DLL работать только на одном ядре, поскольку я уверен, что это решит проблему?

1 Ответ

0 голосов
/ 23 января 2012

Если у вас есть доступ к коду DLL, вы можете использовать что-то вроде следующих строк в DllMain:

DWORD_PTR processAffinityMask = 0x1;</p> <p>SetProcessAffinityMask( GetCurrentProcess(), processAffinityMask );

Это установит соответствие процесса dll первомуCPU.

...