в ASP.Net являются ли узкие места длительными статическими операциями? - PullRequest
0 голосов
/ 14 марта 2010

Если длительная операция определена в часто называемом статическом методе, является ли узким местом для других потоков в приложении ASP.Net, пытающихся вызвать тот же метод?

Это относится только к методам сатрибут «Синхронизировано»>?

Я искал и не могу найти окончательного ответа.

Ответы [ 2 ]

2 голосов
/ 14 марта 2010

Нет, никакие другие потоки не будут блокироваться, если только метод не получит общую блокировку (например, из-за атрибута Synchronized) или сам вызовет синхронизированный метод.

Как говорит Дарин, вы могли бы потенциально исчерпать пул потоков, но я не думаю, что это то, о чем беспокоился ваш вопрос. Чтобы быть абсолютно ясным, вы можете иметь два потока, выполняющих один и тот же статический метод одновременно, если синхронизация не выполняется.

0 голосов
/ 14 марта 2010

Это будет зависеть от того, когда вы вызовете этот статический метод. Если вы вызываете его непосредственно из кода (например, Page_Load или нажатием какой-либо кнопки), вы монополизируете поток, обслуживающий запрос. Потоки, обслуживающие запросы, извлекаются из пула потоков. Если к ним вызываются медленные операции (независимо от того, вызываете ли вы статический метод или метод экземпляра), ваши возможности по обслуживанию приложений пострадают.

Вы можете использовать асинхронные страницы для повышения производительности, если операция связана с вводом-выводом (вызов базы данных, вызов веб-службы, какой-либо сетевой вызов в целом).

...