Не слишком ли велико время, затрачиваемое потоком на синхронизацию?

Сегодня я профилировал одно из моих приложений C # с помощью анализатора производительности Visual Studio 2010. В частности, я профилировал " Concurrency ", потому что казалось, что у моего приложения должно быть больше возможностей, чем оно демонстрирует. Отчет об анализе показал, что потоки проводили ~ 70-80% своего времени в состоянии синхронизации.

Если честно, я не совсем понимаю, что это значит. Означает ли это, что приложение находится в состоянии блокировки в реальном времени?

Для контекста ... есть ~ 30 + долго работающих потоков, привязанных к одному AppDomain (, если это имеет значение ), и некоторые из потоков очень заняты (например, while (true ) {_waitEvent.WaitOne (0); // делаем что-нибудь} ).

Я понимаю, что это довольно расплывчатый вопрос ... Думаю, я ищу пояснения относительно значения состояния синхронизации потоков. Сколько это слишком много и почему? ~ 75% действительно плохо? У меня слишком много тем? или мне просто начать поиски в других областях?

7
задан Cœur 18 June 2017 в 14:59
поделиться