Мы сталкиваемся с проблемами производительности, и одним из потенциальных виновников является централизованное использование волатильного синглтона. конкретный код имеет видаКакова стоимость ключевого слова volatile в многопроцессорной системе?
class foo {
static volatile instance;
static object l = new object();
public static foo Instance {
if (instance == null)
lock(l) {
if (instance == null)
instance = new foo();
}
return foo();
}
}
это работает на 8-полосное поле, и мы видим контекст переключение на сумму 500000 в секунду. типичные системные ресурсы в порядке: 25% -ный процессор, 25% -ный доступ к памяти, низкий уровень ввода-вывода, отсутствие поискового вызова и т. д.
с использованием энергозависимого поля индуцирует барьер памяти или перезагрузку любого типа процессора? или он просто идет после основной памяти каждый раз, только для этого поля?
нет, это пример foo. – kolosy
Я не уверен, почему это должно быть изменчивым, поскольку вы не меняете ссылку. –
Я тоже не - это чей-то код, который я отлаживаю. мой главный вопрос, однако, заключается в том, может ли использование volatile здесь вызвать проблемы конкуренции на многоядерном блоке x86. – kolosy