В прошлом я не раз пользовался так называемым double-checked locking для ускорения инициализации разделяемой неизменяемой переменной. Т.е. вместо кода вида
По крайней мере без использования memory barrier и/или volatile, да. Они утверждают, однако, что без безусловного lock вообще не обойтись - этого я ещё не проверял. (Хотя, возможно, они не учитывают каких-либо особенностей .NET - там статья без привязки к платформе.)
«Информоград», говоришь? Не знаю, не встречался ранее с этим. Нужно будет почитать. Не можешь кинуть ссылку на описание непосредственно алгоритма, чтобы меньше искать?
Ты уверен, что это описание именно алгоритма? То, что дано в презентации очень неконкретно и оперирует какими-то сторонними понятиями «энергетики». И реализацией этого алгоритма должна быть программа построения нейролингвистической сети, как я понял после поверхностного просмотра.
Comments 12
А они правы в своих разъяснениях ?
Reply
Reply
Reply
Reply
Reply
(The comment has been removed)
Reply
Это написано в MSDN в описании паттерна синглетона.
Reply
Reply
Reply
Ага. Вот этот код действительно работает:
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
Но. Заметь обязательное использование volatile.
Reply
Leave a comment