У меня есть приложение, которое имеет некоторые проблемы с обработкой многопроцессорных систем. Это не приложение, в котором я испытываю особую привязанность к модификации и хотел бы избежать его, если это возможно. Тем не менее, я не над модификацией кода, если нужно. Приложение написано в VBA (и, следовательно, моя склонность избегать касания).
Мы заметили, что приложение, похоже, работает довольно плавно, если мы устанавливаем близость процессора к одному процессору с помощью диспетчера задач, только проявляя нестабильность, когда сродство к процессору не установлено.
Я знаю, что я могу указать близость процессора к задаче с использованием .NET и как таковой, существует возможность написать приложение оболочки, которое можно использовать для запуска устаревших приложений с определенным сродством к процессору, есть ли у кого-нибудь какие-либо опыт с этим и может выкинуть некоторые идеи относительно головных болей, с которыми я, вероятно, столкнусь с этим подходом?
Другой вопрос: действительно ли возможно изменить основной продукт VBA, чтобы справиться с его собственным родством процессора? Мне никогда не приходилось обращаться с этим каким-либо из моих приложений изначально, поэтому это (на данный момент) полностью выходит за рамки моего опыта.
Заранее спасибо
Один из способов сделать это можно с помощью инструментария совместимости приложений Windows.
Вы даете ему способ идентифицировать ваше приложение (например, по адресу .exe), а затем оно позволяет указать несколько настроек. Одной из них является сродство к процессору. Он создает базу данных, которая содержит все ваши настройки.
Это машина, поэтому это не очень хорошее решение для широко распространенного приложения, но если это приложение нужно запускать только на одном компьютере, это избавит вас от необходимости менять код.
Вы можете использовать Sysinternal PsExec, чтобы запустить приложение с определенным сродством к процессору, например. для привязки доступа к вызову CPU 1
psexec.exe -a 1 "%ProgramFiles%\Microsoft Office\Office12\access.exe"
Чтобы ответить на второй вопрос: как вы отметили вопрос с помощью access-vba, я предполагаю, что ваш код VBA является решением Access. Затем ваш код VBA будет выполнен в процессе, т.е. Вам придется изменить близость процессора к процессу access.exe. Невозможно изменить сродство двигателя VBA отдельно.
Однако, прежде чем указывать принадлежность процессора, убедитесь, что вы полностью осознаете последствия. Скручивание этой установки может иметь нежелательные эффекты. Для хорошего примера прочитайте пост Раймонда Чена: