Поскольку разработчики компилятора пробуют, добавляет оптимизация для вещей, которые имеют значение (я надеюсь), и которые измеряются в *сравнительные тесты Stone (я боюсь).
существует огромное количество других возможных фрагментов кода как Ваши, которые ничего не делают и могли быть оптимизированы с увеличивающимся усилием на разработчике компилятора, но с которыми почти никогда не встречаются.
то, Что я чувствую себя смущающим, - то, что даже сегодня большинство компиляторов генерирует код для проверки на switchValue быть больше, чем 255 для плотного или почти полного переключателя на неподписанном символе. Это добавляет 2 инструкции к большей части внутреннего цикла интерпретатора байт-кода.
Прочтите документацию по всем этим вещам:
1)
Application.Lock() and Application.Unlock()
Метод Lock блокирует других клиентов от изменения переменных, хранящихся в объект приложения цитата
2) Вы не можете этого сделать:
public class MyClass
{
lock
{
// DO COOL CODE STUFF.
}
}
3) ReaderWriterLockSlim следует использовать, если вы можете иметь несколько клиентов, читающих одновременно, но доступ для записи должен иметь монопольный доступ.
4 ) Этот код:
public static object lockObject = new object();
public class MyClass
{
lock(lockObject)
{
// DO COOL CODE STUFF.
}
}
будет означать, что только 1 поток может находиться в этом блоке одновременно. Значение сериализованного доступа для чтения.
Блокировка отдельного объекта не очень хорошо масштабируется. В качестве альтернативы я бы предложил рассмотреть шаблон проектирования Object Pool . Он имеет гораздо больше возможностей для роста для удовлетворения растущих потребностей пользователей.