Я разрабатываю эффективный разреженный матричный решатель, который использует концепцию многопоточности (C++ 11 std :: thread) за последний год. Выполнение самостоятельного теста на моем коде работает отлично, и все ожидания превышены. Однако при связывании кода (как статической библиотеки) с программным обеспечением, которое я разрабатываю, производительность была намного хуже и из того, что я вижу в загрузках ЦП в диспетчере задач, все потоки работают на одном ядре, которое не было в ходе автономного тестирования. Имеет ли системная нагрузка какое-либо отношение к этому?Изменение поведения многопоточности при связывании статической библиотеки с программой
У меня нет доступа к программному коду.
У кого-нибудь есть какие-либо советы или какие-либо объяснения?
, если все потоки работают на одном ядре, это может быть из-за 'SetProcessAffinityMask()' вызывается где-то в приложении –
@Slava Zhuyko, приложение написано в FORTRAN, а SetProcessAffinityMask() не поддерживается на этом языке. – Anas