Сегодня я профилировал одно из моих приложений C # с помощью анализатора производительности Visual Studio 2010. В частности, я профилировал " Concurrency ", потому что казалось, что у моего приложения должно быть больше возможностей, чем оно демонстрирует. Отчет об анализе показал, что потоки проводили ~ 70-80% своего времени в состоянии синхронизации.
Если честно, я не совсем понимаю, что это значит. Означает ли это, что приложение находится в состоянии блокировки в реальном времени?
Для контекста ... есть ~ 30 + долго работающих потоков, привязанных к одному AppDomain (, если это имеет значение ), и некоторые из потоков очень заняты (например, while (true ) {_waitEvent.WaitOne (0); // делаем что-нибудь}
).
Я понимаю, что это довольно расплывчатый вопрос ... Думаю, я ищу пояснения относительно значения состояния синхронизации потоков. Сколько это слишком много и почему? ~ 75% действительно плохо? У меня слишком много тем? или мне просто начать поиски в других областях?